軟體包 |
使用工具 |
使用軟體 |
撥碼 |
例程 |
示例板子 |
二、 測試過程
1、代碼分析
函數調用流程:main->adc_sync_demo-> print_adc_data-> adc_sample_data_check。
圖 (1)
圖 (2)
adc_sample_data_check:求平均值,與 log 中顯示的信息一致。
print_adc_data:列印轉換得知的電壓,與 log 中顯示的信息一致;
圖 (3)
圖 (4)
adc_sync_demo 函數:
ana_param 參數配置:採樣時間,參考電壓(測量得到板子的 ADC REF 值,並設置 BOARD_ADC_REF_VOLT 為測得的 ADC REF 的值),輸入模式;
rc0_entry_cfg 請求通道配置:採集的通道,採集所使用的參數->觸發模式(軟體觸發還是硬體觸發),觸發次數(必須在 1-16 次之間);
rc0_cfg RC 配置:定時器計數結束值,定時器比較值,當前 RC entry,起始 RC entry,結束 RC entry,定時器模式,RC 觸發模式等,這裡是軟體觸發,倒數第二個參數
SDRV_ADC_RC_TRG_MODE_HW;
sync_cfg:配置同步模式 slot 間隔最大值為 50clock ,其中根據 ADC 最大採樣時間 34.5clock,ADC 固定轉化時間 13.5clock,再預留 2clock 時間間隔,將 RC entry 變量依次添加至 cid_buf 數組中,ADC 同步開啟後將按照 cid_buf 數組的順序存放 ADC 轉化結果。
sdrv_adc_init:初始化 ADC 模塊;
將 ana_param 依次配置到 0~2 位置上;
將 rc0_entry_cfg 依次配置到 rc0 的 0 位置上;
先啟動觸發再啟動同步模式。以免 slot 啟動後收不到觸發信號,導致 slot 空轉;
…
adc_sample_data_check:見注釋;
清空FIFO殘餘數據;
圖 (5)
main 函數:
初始化相應的時鐘->復位相關模塊->初始化中斷向量->初始化引腳->初始化調試串口->將實際引腳連接到 ADC 的輸入通道->函數 adc_sync_demo;
這段解釋一下:
#ifdef TEST_WITH_ADC1
printf("ADC1 actual clock rate %d Hz\n", sdrv_ckgen_get_rate(CLK_NODE(g_ckgen_ip_adc1)));
#elif defined ( TEST_WITH_ADC2 )
printf("ADC2 actual clock rate %d Hz\n", sdrv_ckgen_get_rate(CLK_NODE(g_ckgen_ip_adc2)));
#endif
本 demo 默認定義了 TEST_WITH_ADC2,如果定義 TEST_WITH_ADC1,則列印 ADC1 actual clock rate %d Hz\n:
圖(6)
圖 (7)
2、測試結果
運行 adc_sync_poll.eww,上電,log 列印:
圖 (8)
圖 (9)
本 Demo 執行完成後,ADC 轉換完成 A12、A14、A15 這些管腳上的電壓信號,並輸出相應的電壓數據。
三、 參考資料:
《E3400_E3600_MCU_TRM_Rev01.00.pdf》
《E3400_E3600_MCU_Datasheet_Rev00.19.pdf》
《SD103_E3_GATEWAY_ePOWERTRAIN_A02_絲印圖.pdf》
《SD103_E3_REF_GATEWAY_ePOWERTRAIN_A02_SCH》
https://www.wpgdadatong.com.cn/blog/detail/72125
https://www.wpgdadatong.com.cn/blog/detail/72867
https://www.wpgdadatong.com.cn/blog/detail/70469
例程下《readme.txt》
歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com
作者:Rita Liu / 劉倩
評論