一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

聚豐項(xiàng)目 > 基于CH32V103R 開發(fā)板的數(shù)據(jù)采集

基于CH32V103R 開發(fā)板的數(shù)據(jù)采集

最近在做醫(yī)療制品分公司的MES項(xiàng)目,需要讀取設(shè)備的能耗等數(shù)據(jù),因?yàn)椴糠衷O(shè)備比較老舊,無法直接獲取相關(guān)數(shù)據(jù),需要通過傳感器和控制器獲取,考慮到設(shè)備數(shù)量較大,如果采用單片機(jī)經(jīng)濟(jì)性會(huì)比較高,正好得知RTT大賽的消息,有幸申請(qǐng)到了一片沁恒微電子的CH32V103R-R1開發(fā)板,希望國產(chǎn)的RISC-V架構(gòu)的芯片能盡快替代進(jìn)口。也希望國產(chǎn)的軟件及生態(tài)能盡快建立起來。

jf_38023859 jf_38023859

分享
0 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

jf_38023859 jf_38023859

團(tuán)隊(duì)成員

sl 工程師

分享
項(xiàng)目簡介
最近在做醫(yī)療制品分公司的MES項(xiàng)目,需要讀取設(shè)備的能耗等數(shù)據(jù),因?yàn)椴糠衷O(shè)備比較老舊,無法直接獲取相關(guān)數(shù)據(jù),需要通過傳感器和控制器獲取,考慮到設(shè)備數(shù)量較大,如果采用單片機(jī)經(jīng)濟(jì)性會(huì)比較高,正好得知RTT大賽的消息,有幸申請(qǐng)到了一片沁恒微電子的CH32V103R-R1開發(fā)板,希望國產(chǎn)的RISC-V架構(gòu)的芯片能盡快替代進(jìn)口。也希望國產(chǎn)的軟件及生態(tài)能盡快建立起來。
硬件說明

硬件部分主要包括以下三部分:

(1)主控裝置:CH32V103R-R1開發(fā)板

(2)輸入分壓:精密電阻分壓器

(3)傳感器:電流互感器,溫度傳感器、濕度傳感器



軟件說明

這個(gè)MES應(yīng)用中,需采集設(shè)備的參數(shù),這里就利用開發(fā)板實(shí)現(xiàn)將傳感器輸出的設(shè)備電壓,電流、功率、壓力、流量、溫度、濕度等模擬量信號(hào),轉(zhuǎn)換成數(shù)字量信號(hào),通過串口通信傳遞給上位機(jī)。

       核心的功能就是ADCuart

     找到了ADC的例程,例程中有4路輸入,指南上給的技術(shù)參數(shù)顯示,這個(gè)開發(fā)板的芯片有1612位外部ADC通道,和兩路內(nèi)部通道。

       將程序修改為16ADC規(guī)則通道采集。

// 配置 ADC 通道轉(zhuǎn)換順序?yàn)?/span>1,第一個(gè)轉(zhuǎn)換,采樣時(shí)間為55.5個(gè)時(shí)鐘周期

 

    ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 5, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 6, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 7, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 8, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 9, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 10, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 11, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 12, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 13, ADC_SampleTime_55Cycles5);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 14, ADC_SampleTime_55Cycles5);

ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 15, ADC_SampleTime_55Cycles5);

ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 16, ADC_SampleTime_55Cycles5);

主程序:

    int main(void)

{

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    USARTx_CFG();

 

    Delay_Ms(100);

    USARTx_SendStr(USART2, "This is a test data_MADC.\n");

    Delay_Init();

    USART_Printf_Init(115200);

    ADC_DMA_CONF();

    printf("SystemClk:%d\r\n",SystemCoreClock);

    printf("\r\n ADC多通道DMA讀取測試 \r\n");

    while (1)

    {

  //

        char str[500];

        sprintf(str,"ADC1:%d,ADC2:%d,ADC3:%d,ADC4:%d,ADC5:%d,ADC6:%d,ADC7:%dADC8:%d,ADC9:%d,ADC10:%d,ADC11:%d,ADC12:%d,ADC13:%d,ADC14:%d,ADC15:%d,ADC16:%d \r\n", Get_Adc_Average(ADC_ConvertedValue[0],10),ADC_ConvertedValue[1],ADC_ConvertedValue[2],ADC_ConvertedValue[3],ADC_ConvertedValue[4],ADC_ConvertedValue[5],ADC_ConvertedValue[6],ADC_ConvertedValue[7],ADC_ConvertedValue[8],ADC_ConvertedValue[9],ADC_ConvertedValue[10],ADC_ConvertedValue[11],ADC_ConvertedValue[12],ADC_ConvertedValue[13],ADC_ConvertedValue[14],ADC_ConvertedValue[15]);

        printf("ADC1:%d,ADC2:%d,ADC3:%d,ADC4:%d,ADC5:%d,ADC6:%d,ADC7:%dADC8:%d,ADC9:%d,ADC10:%d,ADC11:%d,ADC12:%d,ADC13:%d,ADC14:%d,ADC15:%d,ADC16:%d \r\n", Get_Adc_Average(ADC_ConvertedValue[0],10),ADC_ConvertedValue[1],ADC_ConvertedValue[2],ADC_ConvertedValue[3],ADC_ConvertedValue[4],ADC_ConvertedValue[5],ADC_ConvertedValue[6],ADC_ConvertedValue[7],ADC_ConvertedValue[8],ADC_ConvertedValue[9],ADC_ConvertedValue[10],ADC_ConvertedValue[11],ADC_ConvertedValue[12],ADC_ConvertedValue[13],ADC_ConvertedValue[14],ADC_ConvertedValue[15]);

        USARTx_SendStr(USART2, str);

        Delay_Ms(500);


演示效果

image.pngimage.png

評(píng)論區(qū)(0 )