99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【南京中科微CSM32RV20開發(fā)板試用體驗(yàn)】不帶掃描的ADC,如何實(shí)現(xiàn)多個(gè)模擬通道采樣?

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-30 10:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:xcs101, 帖子地址:https://bbs.elecfans.com/jishu_2252385_1_1.html

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

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

三、庫函數(shù)介紹
ADC共有4個(gè)庫函數(shù)


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


  • 中斷處理函數(shù)


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

  • 初始化函數(shù)
    poYBAGILwi-ALok4AAS83STE5ik483.png

    pYYBAGILwOeAfWifAAIiZjg5Fgk062.png

    pYYBAGILwFGAf_aVAABiMgoykSc349.png



    1. void ADC_Init_case1(void)//內(nèi)部基準(zhǔn),測量PA4輸入電壓
    2. {
    3. ADC->CCR = 0<<20 //CCR[21:20]----------測試控制:00-關(guān)閉,01-VREFP輸出,10-VREFN輸出,11-Vt溫度傳感器輸出
    4. |1<<19 //CCR[19]---------內(nèi)部通道增益: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]------內(nèi)部基準(zhǔn)選擇:0-(1.7~0.498V),1-(1.214~0V)
    7. |0<<12 //CCR[12]-------------基準(zhǔn)來源:0-內(nèi)部基準(zhǔn),1-外部基準(zhǔn)
    8. |0<<8??//CCR[11:8]---------轉(zhuǎn)換前延時(shí):0000-不延時(shí),0001-2^0個(gè)ADC時(shí)鐘,0010-2^1個(gè)ADC時(shí)鐘...1111-2^14個(gè)ADC時(shí)鐘
    9. |3<<6??//CCR[7:6]------------時(shí)鐘分頻:00-不分頻,01-2分頻...11-8分頻(時(shí)鐘<=4M)
    10. |0<<5??//CCR[5]1/2VDD電壓采集通道使能:0-關(guān)閉,1-使能
    11. |0<<4??//CCR[4]----------GPIO觸發(fā)模式:0-上升沿觸發(fā),1-下降沿觸發(fā)
    12. |0<<2??//CCR[7:6]----------觸發(fā)信號源:00-軟件觸發(fā),01/10-保留,11-GPIO觸發(fā)
    13. |0<<1??//CCR[1]--------------采樣模式:0-單次模式,1-連續(xù)模式
    14. |1<<0; //CCR[0]--------------電源開關(guān):0-OFF,1-ON
    15. Delay32M_us(20);//ADC電源開啟需要時(shí)間
    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-中斷模式,默認(rèn)為0;
    18. GPIO_MODE_Init(GPIOA,PIN4,GPIO_MODE_ANALOG);//設(shè)置GPIO為ADC輸入
    19. }
    復(fù)制代碼

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



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


    庫函數(shù)中軟軟件觸發(fā)程序有誤,應(yīng)該將ADC_CR[0]置1啟動(dòng),程序里寫成將ADC_CR[1]置1啟動(dòng)。
    pYYBAGILoEeAH49TAAImDbcFle8560.png

    應(yīng)修改如下:


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


四、輪流讀取各通道數(shù)據(jù)功能實(shí)現(xiàn)
  • 修改初始化函數(shù)如下:


    1. ADC_Init(uint32_t ch)
    2. {
    3. ADC->CCR = 0<<20 //CCR[21:20]----------測試控制:00-關(guān)閉,01-VREFP輸出,10-VREFN輸出,11-Vt溫度傳感器輸出
    4. |1<<19 //CCR[19]---------內(nèi)部通道增益: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]------內(nèi)部基準(zhǔn)選擇:0-(1.7~0.498V),1-(1.214~0V)
    7. |0<<12 //CCR[12]-------------基準(zhǔn)來源:0-內(nèi)部基準(zhǔn),1-外部基準(zhǔn)
    8. |0<<8??//CCR[11:8]---------轉(zhuǎn)換前延時(shí):0000-不延時(shí),0001-2^0個(gè)ADC時(shí)鐘,0010-2^1個(gè)ADC時(shí)鐘...1111-2^14個(gè)ADC時(shí)鐘
    9. |3<<6??//CCR[7:6]------------時(shí)鐘分頻:00-不分頻,01-2分頻...11-8分頻(時(shí)鐘<=4M)
    10. |0<<5??//CCR[5]1/2VDD電壓采集通道使能:0-關(guān)閉,1-使能
    11. |0<<4??//CCR[4]----------GPIO觸發(fā)模式:0-上升沿觸發(fā),1-下降沿觸發(fā)
    12. |0<<2??//CCR[7:6]----------觸發(fā)信號源:00-軟件觸發(fā),01/10-保留,11-GPIO觸發(fā)
    13. |0<<1??//CCR[1]--------------采樣模式:0-單次模式,1-連續(xù)模式
    14. |1<<0; //CCR[0]--------------電源開關(guān):0-OFF,1-ON
    15. Delay32M_us(20);//ADC電源開啟需要時(shí)間
    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)}//設(shè)置GPIO為ADC輸入
    19. else if(ch=10)
    20. {GPIO_MODE_Init(GPIOA,PIN12,GPIO_MODE_ANALOG)}
    21. }
    復(fù)制代碼

  • 實(shí)現(xiàn)多通道采樣


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

  • 實(shí)現(xiàn)比較控制
    /*當(dāng)輸入模擬量不在設(shè)置值中時(shí),對應(yīng)報(bào)警燈亮*/
    /*初始化設(shè)置值,數(shù)組前一位為上限,后一位為下限*/


    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);
    復(fù)制代碼


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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 南京中科微
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    1105
  • CSM32RV20
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    349
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    有獎(jiǎng)丨米爾 瑞芯RK3506開發(fā)板免費(fèi)試用來啦!

    米爾與瑞芯合作發(fā)布的新品基于瑞芯RK3506應(yīng)用處理器的MYD-YR3506開發(fā)板免費(fèi)試用名額增加啦
    的頭像 發(fā)表于 07-10 08:03 ?136次閱讀
    有獎(jiǎng)丨米爾 瑞芯<b class='flag-5'>微</b>RK3506<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>來啦!

    有獎(jiǎng)丨米爾 瑞芯RK3506開發(fā)板免費(fèi)試用

    米爾與瑞芯合作發(fā)布的新品基于瑞芯RK3506應(yīng)用處理器的MYD-YR3506開發(fā)板免費(fèi)試用名額來啦~~米爾提供了3塊價(jià)值299元的MYD-YR3506
    的頭像 發(fā)表于 06-19 08:04 ?361次閱讀
    有獎(jiǎng)丨米爾 瑞芯<b class='flag-5'>微</b>RK3506<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>

    愛芯32位MCU開發(fā)板AiP32RV15X介紹

    AiP32RV15X開發(fā)板是一款基于RISCV內(nèi)核的32位MCU開發(fā)板,提供了板載調(diào)試器、RESET、WAKEUP按鍵、三色LED、CAN收發(fā)器、USB接口、UART、ADC、SPI、
    的頭像 發(fā)表于 06-17 10:54 ?280次閱讀
    中<b class='flag-5'>微</b>愛芯32位MCU<b class='flag-5'>開發(fā)板</b>AiP32<b class='flag-5'>RV</b>15X介紹

    有獎(jiǎng)丨米爾 瑞芯RK3562開發(fā)板免費(fèi)試用新增名額!

    米爾與瑞芯合作發(fā)布的新品基于瑞芯RK3562應(yīng)用處理器的MYD-YR3562開發(fā)板免費(fèi)試用名額增加
    的頭像 發(fā)表于 06-13 08:04 ?396次閱讀
    有獎(jiǎng)丨米爾 瑞芯<b class='flag-5'>微</b>RK3562<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>新增名額!

    基于RK3576處理器,米爾RK3576開發(fā)板免費(fèi)試用

    年7月19日 ? 評測數(shù)量: 3塊 ? 更多熱點(diǎn)文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發(fā)板免費(fèi)試用 RISC-V開發(fā)板深度評測!頂級開發(fā)板免費(fèi)
    的頭像 發(fā)表于 06-09 15:00 ?502次閱讀
    基于RK3576處理器,米爾RK3576<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>

    性能強(qiáng)悍!合眾HZ-RK3568開發(fā)板試用體驗(yàn)

    月19日 ? 評測數(shù)量: 10塊 ? 更多熱點(diǎn)文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發(fā)板免費(fèi)試用 RISC-V開發(fā)板深度評測!頂級開發(fā)板免費(fèi)
    的頭像 發(fā)表于 06-05 16:30 ?522次閱讀
    性能強(qiáng)悍!合眾HZ-RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>試用</b>體驗(yàn)

    RISC-V開發(fā)板!五科技CF5010RBT60開發(fā)板免費(fèi)試用

    的工業(yè)級環(huán)境溫度需求。 支持4個(gè) UART、2個(gè) SPI、2個(gè) I2C、1個(gè)CAN等通信接口 集成高精度模擬單元 12bit 2Msps ADC,可實(shí)現(xiàn)動(dòng)態(tài)高精度實(shí)時(shí)采樣,充分滿足物聯(lián)
    發(fā)表于 06-03 17:53

    【評測試用】合眾HZ-T536開發(fā)板免費(fèi)試用體驗(yàn)

    【評測試用】合眾HZ-T536開發(fā)板免費(fèi)試用體驗(yàn)
    的頭像 發(fā)表于 05-27 08:05 ?222次閱讀
    【評測<b class='flag-5'>試用</b>】合眾HZ-T536<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>體驗(yàn)

    基于RV1126開發(fā)板實(shí)現(xiàn)駕駛員行為檢測方案

    RV1126開發(fā)板實(shí)現(xiàn)駕駛員行為檢測:通過圖像識別出這幾種行為:打電話、抽煙、疲勞駕駛。
    的頭像 發(fā)表于 04-18 17:47 ?354次閱讀
    基于<b class='flag-5'>RV</b>1126<b class='flag-5'>開發(fā)板實(shí)現(xiàn)</b>駕駛員行為檢測方案

    基于RV1126開發(fā)板的按鍵測試方法與例程

    RV1126開發(fā)板的按鍵測試方法與例程詳細(xì)描述
    的頭像 發(fā)表于 04-15 17:03 ?351次閱讀
    基于<b class='flag-5'>RV</b>1126<b class='flag-5'>開發(fā)板</b>的按鍵測試方法與例程

    有獎(jiǎng)丨米爾 瑞芯YR3562開發(fā)板免費(fèi)試用

    米爾與瑞芯合作發(fā)布的新品基于瑞芯RK3562應(yīng)用處理器的MYD-YR3562開發(fā)板免費(fèi)試用活動(dòng)來啦~~米爾提供了3塊價(jià)值599元的MYD-YR3562
    的頭像 發(fā)表于 03-20 08:05 ?519次閱讀
    有獎(jiǎng)丨米爾 瑞芯<b class='flag-5'>微</b>YR3562<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>

    追加名額丨米爾瑞芯RK3576開發(fā)板有獎(jiǎng)試用

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

    常用在工業(yè)控制系統(tǒng)上的MCU芯片資料:CSM32RV20

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

    有獎(jiǎng)丨米爾 瑞芯RK3576開發(fā)板免費(fèi)試用

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

    【龍芯2K0300蜂鳥試用】龍芯2K0300蜂鳥開發(fā)板引腳定義及體驗(yàn)開發(fā)板

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