色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【南京中科微CSM32RV20開發板試用體驗】不帶掃描的ADC,如何實現多個模擬通道采樣?

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-30 10:22 ? 次閱讀
本文來源電子發燒友社區,作者:xcs101, 帖子地址:https://bbs.elecfans.com/jishu_2252385_1_1.html

本次實驗旨在利用ADC結合UART,完成試用計劃中的項目,實現對電源模塊的控制。
一、ADC外設介紹
CSM32RV20 內置了 1 個快速、高精度 ADC,內部集成高精度 1.2 V 基準源, 支持 13/14/15/16 位分辨率, 在分辨率和轉換速度之間得到平衡。 ADC 工作時, VDD 電壓要求大于 2.5 V。
注: 1) 推薦用戶使用 ADC 時,將 ADC_CCR[5]寫 1,否則會增大功耗;
2) 分辨率出廠初始化, 用戶不可更改。
3)PGA通道對應模擬通道10,引腳PA12,相關參數在ADC寄存器中。
pYYBAGILvkOAErrNAAF4UuJc-ME075.png

二、ADC功能
  • 分辨率為13位,需29個ADC時鐘周期完成一次轉換
  • 分辨率為14位,需45個ADC時鐘周期完成一次轉換
  • 分辨率為15位,需77個ADC時鐘周期完成一次轉換
  • 分辨率為16位,需141個ADC時鐘周期完成一次轉換
  • ADC轉換完成之后自動產生中斷
  • ADC時鐘與總線時鐘具有相同的時鐘源,支持1/2/4/8分頻
  • ADC采樣時鐘推薦4MHz,最高不超過8MHz
  • 支持單次模式和連續模式
  • 連續模式下轉換間隔可編程
  • 支持軟件觸發和GPIO觸發
  • 可測量電壓范圍為0~VDD(VDD < 4.8 V)
  • 支持外部基準
  • 11個測量通道可選,最多支持9個觸摸按鍵
  • 支持待測量電壓乘以1/4

三、庫函數介紹
ADC共有4個庫函數


  1. //中斷處理函數
  2. void ADC_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  3. //初始化函數
  4. void ADC_Init_case1(void);//內部基準,測量PA4輸入電壓
  5. //功能函數
  6. uint32_t ADC_Conversion(void);//適用于非中斷模式
  7. void ADC_Soft_Start(void);//軟件觸發ADC,適用于中斷模式
復制代碼


  • 中斷處理函數


    1. void ADC_IRQHandler(void)
    2. {
    3. if(ADC->ISR&0x04)//
    4. {
    5. ADC->CR &= ~0x02; //軟件關閉ADC
    6. //adc_result = ADC->DR;
    7. //GPIO_Toggle(GPIOA,PIN9);
    8. }
    9. }
    復制代碼

  • 初始化函數
    poYBAGILwi-ALok4AAS83STE5ik483.png

    pYYBAGILwOeAfWifAAIiZjg5Fgk062.png

    pYYBAGILwFGAf_aVAABiMgoykSc349.png



    1. void ADC_Init_case1(void)//內部基準,測量PA4輸入電壓
    2. {
    3. ADC->CCR = 0<<20 //CCR[21:20]----------測試控制:00-關閉,01-VREFP輸出,10-VREFN輸出,11-Vt溫度傳感器輸出
    4. |1<<19 //CCR[19]---------內部通道增益:0-1,1-1/4
    5. |0<<16 //CCR[21:20]-----------PGA增益:000-1,001-2,010-4......111-128
    6. |1<<13 //CCR[15:13]------內部基準選擇:0-(1.7~0.498V),1-(1.214~0V)
    7. |0<<12 //CCR[12]-------------基準來源:0-內部基準,1-外部基準
    8. |0<<8??//CCR[11:8]---------轉換前延時:0000-不延時,0001-2^0個ADC時鐘,0010-2^1個ADC時鐘...1111-2^14個ADC時鐘
    9. |3<<6??//CCR[7:6]------------時鐘分頻:00-不分頻,01-2分頻...11-8分頻(時鐘<=4M)
    10. |0<<5??//CCR[5]1/2VDD電壓采集通道使能:0-關閉,1-使能
    11. |0<<4??//CCR[4]----------GPIO觸發模式:0-上升沿觸發,1-下降沿觸發
    12. |0<<2??//CCR[7:6]----------觸發信號源:00-軟件觸發,01/10-保留,11-GPIO觸發
    13. |0<<1??//CCR[1]--------------采樣模式:0-單次模式,1-連續模式
    14. |1<<0; //CCR[0]--------------電源開關:0-OFF,1-ON
    15. Delay32M_us(20);//ADC電源開啟需要時間
    16. ADC->SEL = 3; //測量通道選擇:0-PTAT,1-1/2VDD,2-PAD3,3-PAD4,4-PAD5,5-PAD6,6-PAD7,7-PAD8,8-PAD9,9-PAD10,10-NTC,11-VDD,其它-無
    17. ADC->IER |= 0<<2 //IER[2]--------中斷使能:0-非中斷模式,1-中斷模式,默認為0;
    18. GPIO_MODE_Init(GPIOA,PIN4,GPIO_MODE_ANALOG);//設置GPIO為ADC輸入
    19. }
    復制代碼

  • 功能函數
    通過ADC_Conversion(void)函數可實現ADC軟啟動,并返回采樣值,ADC最大分辨率為16位,數據存放在ADC_DR寄存器,采用小端對齊。
    pYYBAGILumKAIKI5AAG44OKwd6Y905.png



    1. uint32_t ADC_Conversion(void)//適用于非中斷模式
    2. {
    3. uint32_t adc_result;
    4. //控制寄存器
    5. ADC->CR = 1; //1:開啟轉換,0:結束轉換
    6. while(!(ADC->ISR&0x04));
    7. adc_result = ADC->DR;
    8. return adc_result;
    9. }
    復制代碼


    庫函數中軟軟件觸發程序有誤,應該將ADC_CR[0]置1啟動,程序里寫成將ADC_CR[1]置1啟動。
    pYYBAGILoEeAH49TAAImDbcFle8560.png

    應修改如下:


    1. void ADC_Soft_Start(void)//軟件觸發ADC,適用于中斷模式
    2. {
    3. ADC->CR |= 0x01;
    4. }
    復制代碼


四、輪流讀取各通道數據功能實現
  • 修改初始化函數如下:


    1. ADC_Init(uint32_t ch)
    2. {
    3. ADC->CCR = 0<<20 //CCR[21:20]----------測試控制:00-關閉,01-VREFP輸出,10-VREFN輸出,11-Vt溫度傳感器輸出
    4. |1<<19 //CCR[19]---------內部通道增益:0-1,1-1/4
    5. |0<<16 //CCR[21:20]-----------PGA增益:000-1,001-2,010-4......111-128
    6. |1<<13 //CCR[15:13]------內部基準選擇:0-(1.7~0.498V),1-(1.214~0V)
    7. |0<<12 //CCR[12]-------------基準來源:0-內部基準,1-外部基準
    8. |0<<8??//CCR[11:8]---------轉換前延時:0000-不延時,0001-2^0個ADC時鐘,0010-2^1個ADC時鐘...1111-2^14個ADC時鐘
    9. |3<<6??//CCR[7:6]------------時鐘分頻:00-不分頻,01-2分頻...11-8分頻(時鐘<=4M)
    10. |0<<5??//CCR[5]1/2VDD電壓采集通道使能:0-關閉,1-使能
    11. |0<<4??//CCR[4]----------GPIO觸發模式:0-上升沿觸發,1-下降沿觸發
    12. |0<<2??//CCR[7:6]----------觸發信號源:00-軟件觸發,01/10-保留,11-GPIO觸發
    13. |0<<1??//CCR[1]--------------采樣模式:0-單次模式,1-連續模式
    14. |1<<0; //CCR[0]--------------電源開關:0-OFF,1-ON
    15. Delay32M_us(20);//ADC電源開啟需要時間
    16. ADC->SEL = ch; //測量通道選擇:0-PTAT,1-1/2VDD,2-PAD3,3-PAD4,4-PAD5,5-PAD6,6-PAD7,7-PAD8,8-PAD9,9-PAD10,10-NTC,11-VDD,其它-無
    17. if(ch>2&ch<9)
    18. {GPIO_MODE_Init(GPIOA,ch,GPIO_MODE_ANALOG)}//設置GPIO為ADC輸入
    19. else if(ch=10)
    20. {GPIO_MODE_Init(GPIOA,PIN12,GPIO_MODE_ANALOG)}
    21. }
    復制代碼

  • 實現多通道采樣


    1. uint32_t ch_value[3];
    2. /*初始化通道1*/
    3. ADC_Init(1);
    4. /*獲取通道1數據*/
    5. ch_value[0] = ADC_Conversion();
    6. Delay32M_us(20);
    7. /*初始化通道2*/
    8. ADC_Init(2);
    9. /*獲取通道2數據*/
    10. ch_value[1] = ADC_Conversion();
    11. /*初始化通道3*/
    12. ADC_Init(3);
    13. /*獲取通道3數據*/
    14. ch_value[2] = ADC_Conversion();
    15. /*通過串口1發送3個通道數據*/
    16. Uart_Send(UART1ch_value,3);
    復制代碼

  • 實現比較控制
    /*當輸入模擬量不在設置值中時,對應報警燈亮*/
    /*初始化設置值,數組前一位為上限,后一位為下限*/


    1. uint32_t SET1_value[2];
    2. uint32_t SET2_value[2];
    3. uint32_t SET3_value[2];
    4. SET1_value[0] = 5;
    5. SET1_value[1] =25;
    6. SET2_value[0] = 5;
    7. SET2_value[1] =25;
    8. SET3_value[0] = 5;
    9. SET3_value[1] =25;
    10. if(ch_value[0]>SET1_value[0] &ch_value[1][1]>
    11. GPIO_Write(GPIOA,PIN9,GPIO_RESET);
    12. else
    13. GPIO_Write(GPIOA,PIN9,GPIO_SET);
    14. if(ch_value[1]>SET2_value[0] &ch_value[1][1]>
    15. GPIO_Write(GPIOA,PIN11,GPIO_RESET);
    16. else
    17. GPIO_Write(GPIOA,PIN11,GPIO_SET);
    18. if(ch_value[2]>SET3_value[0] &ch_value[1][1]>
    19. GPIO_Write(GPIOA,PIN13,GPIO_RESET);
    20. else
    21. GPIO_Write(GPIOA,PIN13,GPIO_SET);
    復制代碼


四、總結
到此,本次試用按計劃完成開發板的學習試用,相關UART的接收發送程序參考之前的文章,比如設置值如何用串口更新,如何將采樣值發送出去。
通過本次試用感受到國產芯片的進步。其外設使用的便利性,為我們開發縮短周期。但是芯片配套生態系統對比進口芯片明顯不足,缺少初始化配置軟件,用戶手冊編寫比較簡單,內容不夠充實,排版不能較好結合開發人員的思路,另外官方提供的庫函數存在較為明顯的BUG。
希望有更多的網友一起在后續使用中共同探討CSM32RV20,也希望廠商能盡快對接國際大廠的發展思路,對相關軟件進行研發升級,對芯片的BUG進行改進。
最后感謝南京中科微和電子發燒友提供這個機會,以上僅代表個人現階段想法,如有不妥,請及時指出,有任何建議,歡迎最下方留言區留言!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 南京中科微
    +關注

    關注

    0

    文章

    60

    瀏覽量

    744
  • CSM32RV20
    +關注

    關注

    0

    文章

    40

    瀏覽量

    216
收藏 人收藏

    評論

    相關推薦

    【敏矽ME32G070開發板免費體驗】+ADC測試與LED點亮

    *附件:【敏矽ME32G070開發板免費體驗】+ADC測試與LED點亮.docx【敏矽ME32G070開發板免費體驗】+
    發表于 12-16 19:00

    【敏矽ME32G070開發板免費體驗】\\+Lora通信終端產品開發項目

    【敏矽ME32G070開發板免費體驗】+Lora通信終端產品開發項目 零. 寫在前面 0.1項目簡介: Lora通信項目,計劃LLCC68+ME32G070組合實現數據通信,可應用于
    發表于 12-15 18:26

    追加名額丨米爾瑞芯RK3576開發板有獎試用

    米爾與瑞芯合作發布的新品基于瑞芯RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576
    的頭像 發表于 11-22 01:00 ?178次閱讀
    追加名額丨米爾瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?226次閱讀
    【RA8D1<b class='flag-5'>試用</b>活動】RA8D1B-CPKCOR<b class='flag-5'>開發板</b>移植linux

    常用在工業控制系統上的MCU芯片資料:CSM32RV20

    CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 內置RISC-V RV32IMAC內核(2.6CoreMark/MHz); 蕞高32MHz工作頻率; 內置4kB的SRAM; 內置8B
    的頭像 發表于 11-15 17:19 ?207次閱讀
    常用在工業控制系統上的MCU芯片資料:<b class='flag-5'>CSM32RV20</b>

    有獎丨米爾 瑞芯RK3576開發板免費試用

    米爾與瑞芯合作發布的新品基于瑞芯RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
    的頭像 發表于 11-12 01:00 ?308次閱讀
    有獎丨米爾 瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名
    的頭像 發表于 11-09 01:02 ?248次閱讀
    有獎<b class='flag-5'>試用</b>!!RA-Eco-RA4E2-64PIN-V1.0<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>活動開始報名

    基于恩智浦FRDM-MCXA153開發板實現RT-Thread的ADC驅動

    數轉換器(ADC)是現代嵌入式系統中不可或缺的組件,它能將連續的模擬信號轉換為離散的數字信號。本文將深入探討如何在NXP的FRDM-MCXA153開發板實現和使用RT-Thread的
    的頭像 發表于 11-01 12:29 ?329次閱讀
    基于恩智浦FRDM-MCXA153<b class='flag-5'>開發板實現</b>RT-Thread的<b class='flag-5'>ADC</b>驅動

    擴展電網應用中的模擬輸入通道(使用16通道、16位、1MSPS雙路同步采樣ADC)

    電子發燒友網站提供《擴展電網應用中的模擬輸入通道(使用16通道、16位、1MSPS雙路同步采樣ADC).pdf》資料免費下載
    發表于 09-21 10:05 ?0次下載
    擴展電網應用中的<b class='flag-5'>模擬</b>輸入<b class='flag-5'>通道</b>(使用16<b class='flag-5'>通道</b>、16位、1MSPS雙路同步<b class='flag-5'>采樣</b><b class='flag-5'>ADC</b>)

    【龍芯2K0300蜂鳥試用】龍芯2K0300蜂鳥開發板引腳定義及體驗開發板

    /6 通道可以獨立采樣, 也可以作為差分采樣 9ADC 通道 33/7 通道可以獨立
    發表于 09-19 18:54

    使用單通道ADC+模擬開關結構采樣多路信號時,ADC采樣率如何選擇呢?

    現在有10路信號需要采樣,每個通道的信號帶寬都是10K,采集電路準備使用模擬開關+單通道ADC結構,考慮
    發表于 08-15 07:02

    點擊參與米爾NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
    的頭像 發表于 06-13 08:02 ?531次閱讀
    點擊參與米爾NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    【GD32F303紅楓派開發板使用手冊】第十二講 ADC-雙軸按鍵搖桿多通道循環采樣實驗

    本實驗是通過ADC規則組多通道循環采樣方式實現雙軸按鍵搖桿傳感器x和y軸電壓值的讀取,通過本實驗主要學習以下內容: ?雙軸按鍵搖桿傳感器工作原理 ?DMA原理 規則組多
    的頭像 發表于 06-11 09:40 ?635次閱讀
    【GD32F303紅楓派<b class='flag-5'>開發板</b>使用手冊】第十二講   <b class='flag-5'>ADC</b>-雙軸按鍵搖桿多<b class='flag-5'>通道</b>循環<b class='flag-5'>采樣</b>實驗

    AD7616的16路采樣通道,如何實現通道狀態的實時自檢,監測通道狀態是否正常?

    AD7616的16路采樣通道,如何實現通道狀態的實時自檢,監測通道狀態是否正常? 1)手冊中通信自測功能是不是
    發表于 05-27 08:07

    【GD32H757Z海棠派開發板使用手冊】第八講 ADC-規則組多通道采樣實驗

    通過本實驗主要學習以下內容: ADC的簡介 GD32FH757 ADC工作原理 DMA和DMAMUX的原理 規則組多通道循環采樣
    的頭像 發表于 05-14 09:39 ?630次閱讀
    【GD32H757Z海棠派<b class='flag-5'>開發板</b>使用手冊】第八講 <b class='flag-5'>ADC</b>-規則組多<b class='flag-5'>通道</b><b class='flag-5'>采樣</b>實驗
    主站蜘蛛池模板: 好男人在线高清WWW免费观看| 丫鬟粗大狠狠贯穿h| 俄罗斯17vidio| 亚洲综合色婷婷在线影院| 欧美亚洲国内日韩自拍视频| 国产做国产爱免费视频| 扒开小处30p| 孕交videosgratis乌克兰| 色妞色视频一区二区三区四区| xxx粗大长欧美| 伊人久久青草| 小骚妇BBBXXX| 日韩免费视频一区| 免费韩国伦理2017最新| 花蝴蝶hd免费| 国产精品7777人妻精品冫| 99久久e免费热视频百度| 亚洲午夜AV久久久精品影院色戒| 色愁愁久久久| 试看2分钟AA片| 热久久视久久精品2015| 麻豆区蜜芽区| 久久国产高清字幕中文| 国产亚洲精品久久久999密臂| 成人无码国产AV免费看直播| 《乳色吐息》无删减版在线观看| 亚洲熟女乱色一区二区三区| 伊人久久大香线蕉无码麻豆| 最近中文字幕高清中文字幕MV| 亚洲色婷婷久久精品AV蜜桃久久| 熟女理发厅| 亚洲二区电影| 亚洲成人一区二区| 又黄又猛又爽大片免费| 一本到2v不卡区| 2021国产精品视频| 最新国产麻豆精品| se01短视频在线观看| 国产精品久久人妻无码网站一区L| 国产Av男人的天堂精品良久| 成人免费视频网站www|