精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

N32L40XCL-STB開發板模塊評測:ADC實踐之虛擬示波器實現

冬至子 ? 來源:qinyunti ? 作者:qinyunti ? 2023-09-26 15:27 ? 次閱讀

1.前言說明

1.1. 本章內容
MCU帶12bit 4.5Msps ADC,這在通用MCU中采樣率是比較高的,適合做模擬前端。
本文先對ADC模塊進行簡單介紹,然后搭建基于MDK和RT-Thread的開發環境,實現ADC信號采集,最終實現虛擬示波器的Demo。

1.2. 模塊介紹
參考《CN_UM_N32L40x Series User Manual_V2.pdf》的《17 模擬數字轉換( ADC)》

1 個 ADC,支持單端輸入和差分輸入 ,12 位逐次逼近型。
19 個通道,可測量 16 個外部和 3 個內部信號源
內部通道支持 TempSensorVREFINT(內部 1.2V BG)、 VREFBUFF(2.048V)
每個通道的 A/D 轉換有四種執行模式:單次、連續、掃描或間斷
帶內嵌數據一致性的數據對齊。 ADC 轉換值存儲(左對齊/右對齊)在 16 位數據寄存器
可以通過模擬看門狗檢測輸入電壓是否在用戶定義的高/低閾值內
ADC的輸入時鐘的最大頻率為 64MHz。
支持 12 位、 10 位、 8 位、 6 位分辨率。
12bit 分辨率下最高采樣速率 4.57MSPS。
10bit 分辨率下最高采樣速率 5.33MSPS。
8bit 分辨率下最高采樣速率 6.4MSPS。
6bit 分辨率下最高采樣速率 8MSPS。
支持觸發采樣,包括 EXTI/TIMER。
各通道的采樣時間間隔可編程
支持自校準。
支持 DMA
中斷生成:轉換結束,注入轉換結束,模擬看門狗事件
支持內部參考電壓(2.048V)
ADC 支持轉換的電壓在 VREF-和 VREF+之間。
ADC 的工作電壓在 1.8V 到 3.6V 之間。
可以外部觸發注入轉換和規則轉換。
其框圖如下

1.jpg

其他相關信息可以參考手冊不再贅述。

1.3. 開發軟件
開發環境:MDK+RT-Thread
下載工具:板載NsLink

2.步驟說明

2.1. 導入ADC測試工程
下載ftp://58.250.18.138/1-Microcontrollers/N32L40xxx_V2.1.0.zip解壓

雙擊N32L40xxx_V2.1.06-軟件開發套件(Software Development Kit)Nationstech.N32L40x_DFP.1.0.0.pack

1.jpg

打開
N32L40xxx_V2.1.06-軟件開發套件(Software Development Kit)Nationstech.N32L40x_Library.1.2.1projectsn32l40x_EVALexamplesRT_ThreadRT_Thread12_ADC_DEVICE_REGISTERMDK-ARMADC_DEVICE_REGISTER.uvprojx

選擇device

1.jpg

2.jpg

3.jpg

如果提示找不到文件context_rvds.S是因為工程路徑中文的原因,工程路徑放在英文路徑即可。

選擇仿真器燒錄算法

1.jpg

2.jpg

3.jpg

下載程序可以看到,串口打印如下(串口參數115200-8-n-1)

1.jpg

2.2. ADC代碼介紹
ADC驅動使用的是RT-Thread的設備框架。

我們從main.c的main函數入口,可以看到創建了兩個線程
test0_thread_entry和test1_thread_entry其中test1_thread_entry線程用于進行ADC采集。

代碼如下:

static void test1_thread_entry(void* parameter)
{
rt_adc_device_t adc_dev;
rt_uint32_t adc_converted_value = 0;
adc_dev = (rt_adc_device_t)rt_device_find("adc");
rt_adc_enable(adc_dev, ADC_CH_6_PA5);
rt_adc_enable(adc_dev, ADC_CH_7_PA6);
if(adc_dev)
{
while(1)
{
adc_converted_value = rt_adc_read(adc_dev, ADC_CH_6_PA5);
rt_kprintf("the PA5 voltage value is %drn", adc_converted_value);
rt_thread_delay(50); //delay 500ms
adc_converted_value = rt_adc_read(adc_dev, ADC_CH_7_PA6);
rt_kprintf("the PA6 voltage value is %drn", adc_converted_value);
rt_thread_delay(50); //delay 500ms
}
}
}
可以看到由于使用了驅動框架代碼很簡單。
rt_adc_device_t adc_dev; 定義設備變量
rt_uint32_t adc_converted_value = 0; 定義變量用于獲取采樣值
adc_dev = (rt_adc_device_t)rt_device_find(“adc”);查找設備
rt_adc_enable(adc_dev, ADC_CH_6_PA5);
rt_adc_enable(adc_dev, ADC_CH_7_PA6); 使能這兩個通道
如果查找到了設備adc_dev則循環采樣
adc_converted_value = rt_adc_read(adc_dev, ADC_CH_6_PA5); 采樣
再打印延時繼續ADC_CH_7_PA6通道的采樣。

相關API可以參考RT-Thread官網這里不再贅述。

3.基于ADC實現虛擬示波器

上一節我們實現了ADC的采集,基于此我們可以實現一些有意思的項目,比如將上述采集到的信號發送到PC端進行處理顯示,那么就可以實現示波器的功能,這一篇就來實現該Demo。

3.1 代碼實現
先將采集到的信號按照一定的格式發送到PC端
上報格式為 “/ 數據,數據 /” 的形式
修改如下,兩路采集后一起上報。

static void test1_thread_entry(void* parameter)
{
rt_adc_device_t adc_dev;
rt_uint32_t adc_converted_value1 = 0;
rt_uint32_t adc_converted_value2 = 0;
adc_dev = (rt_adc_device_t)rt_device_find("adc");
rt_adc_enable(adc_dev, ADC_CH_6_PA5);
rt_adc_enable(adc_dev, ADC_CH_7_PA6);
if(adc_dev)
{
while(1)
{
adc_converted_value1 = rt_adc_read(adc_dev, ADC_CH_6_PA5);
//rt_kprintf("the PA5 voltage value is %drn", adc_converted_value);
//rt_thread_delay(50); //delay 500ms
adc_converted_value2 = rt_adc_read(adc_dev, ADC_CH_7_PA6);
//rt_kprintf("the PA6 voltage value is %drn", adc_converted_value);
//rt_thread_delay(50); //delay 500ms
rt_kprintf("/ %d,%d /rn", adc_converted_value1,adc_converted_value2);
rt_thread_delay(1); // 上報速率為約1kHz(沒有考慮采樣和發送時間)
}
}
}

3.2 上位機配置

我們可以使用一款比較好用的開源的串口可視化工具Serial Studio,可以從以下地址下載安裝,安裝過程很簡單,不再贅述。

打開Serial Studio軟件,按照如下過程配置

點擊控制臺標簽,先配置串口參數,點擊連接,可以看到串口打印信息

1.jpg

點擊json編輯器,創建新項目,設置如下的信息
名字為osc,分割符號為,
開始介乎是符號為/和/ ,對應我們的上報格式 “/ 數據,數據 /” 的形式

1.jpg

點擊拯救(翻譯的問題)
保存文件

1.jpg

2.jpg

3.jpg

1.jpg

2.jpg

3.3 測試
使用變阻器分壓接到PA5和PA6模擬電壓變化,進行測試。
點擊儀表盤可以看到曲線顯示:

1.jpg

改變變阻器位置,可以看到曲線的變化。
得益于ADC的精度和采樣率都比較高,可以實現具備使用價值的虛擬示波器。目前的代碼僅作延時,實際上如果產品化更具備實用價值我們可以實用DMA方式采集,保存到緩存區然后通過USB高速接口發送到PC端進行解析顯示,這樣就可以達到ADC的最大帶寬8MSPS。這個采樣率已經可以比肩一般手持示波器了。

4.章節總結

以上完成了ADC的測試,并實現了一個有一定實用價值的Demo. 從以上可以看出從應用程序開發角度來說,使用RT-Thread的設備框架非常方便,幾行簡單的代碼即可完成ADC采集。
另外Nation的文檔和例程也是做的比較好和規范的,所以使用起來也比較簡單。

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

    關注

    14

    文章

    1016

    瀏覽量

    83645
  • 數據寄存器
    +關注

    關注

    0

    文章

    33

    瀏覽量

    7745
  • 虛擬示波器
    +關注

    關注

    2

    文章

    68

    瀏覽量

    27642
  • ADC采樣
    +關注

    關注

    0

    文章

    134

    瀏覽量

    12831
  • RT-Thread
    +關注

    關注

    31

    文章

    1273

    瀏覽量

    39928
收藏 人收藏

    評論

    相關推薦

    N32L40XCL-STB開發板模塊UART評測

    本章通過RT-Thread Studio配置片上外設UART的功能,實現開發板和PC進行通信。
    的頭像 發表于 08-10 16:52 ?1190次閱讀
    <b class='flag-5'>N32L40XCL-STB</b><b class='flag-5'>開發板</b><b class='flag-5'>模塊</b><b class='flag-5'>之</b>UART<b class='flag-5'>評測</b>

    N32L43XCL-STB開發板硬件使用手冊

    N32L43XCL-STB開發板用于國民技術股份有限公司高性能32位N32L43XCL系列芯片的樣片開發。本文檔詳細描述了N32L43XCL-STB
    發表于 11-02 08:10

    N32L40XCL-STB開發板硬件使用手冊

    N32L40XCL-STB開發板用于國民技術股份有限公司高性能32位N32L40XCL系列芯片的樣片開發。本文檔詳細描述了N32L40XCL-STB
    發表于 11-02 06:35

    國民技術N32G45XCL-STB開發板資料

    國民技術N32G45XCL-STB開發板原理圖資料
    發表于 11-07 15:12 ?7次下載

    國民技術N32G43XCL-STB開發板資料

    國民技術N32G43XCL-STB開發板資料
    發表于 11-07 15:30 ?13次下載

    N32G45XCL-STB (LQFP48)開發板

    N32G45XCL-STB (LQFP48)開發板
    發表于 11-10 19:51 ?0次下載
    <b class='flag-5'>N32G45XCL-STB</b> (LQFP48)<b class='flag-5'>開發板</b>

    N32G45XCL-STB (LQFP48) 開發板

    N32G45XCL-STB (LQFP48) 開發板
    發表于 11-10 19:51 ?0次下載
    <b class='flag-5'>N32G45XCL-STB</b> (LQFP48) <b class='flag-5'>開發板</b>

    N32G43XCL-STB (LQFP48) 開發板

    N32G43XCL-STB (LQFP48) 開發板
    發表于 11-10 19:51 ?0次下載
    <b class='flag-5'>N32G43XCL-STB</b> (LQFP48) <b class='flag-5'>開發板</b>

    N32L43XCL-STB (LQFP48) 開發板

    N32L43XCL-STB (LQFP48) 開發板
    發表于 11-10 19:51 ?4次下載
    <b class='flag-5'>N32L43XCL-STB</b> (LQFP48) <b class='flag-5'>開發板</b>

    N32L40XCL-STB (LQFP48) 開發板

    N32L40XCL-STB (LQFP48) 開發板
    發表于 11-10 19:51 ?3次下載
    <b class='flag-5'>N32L40XCL-STB</b> (LQFP48) <b class='flag-5'>開發板</b>

    N32G43XCL-STB (LQFP48) 開發板

    N32G43XCL-STB (LQFP48) 開發板
    發表于 11-10 19:51 ?1次下載
    <b class='flag-5'>N32G43XCL-STB</b> (LQFP48) <b class='flag-5'>開發板</b>

    N32L40XCL-STB 開發板模塊評測任務大挑戰

    評測任務挑戰活動,讓開發者小伙伴們互相協作,對開發板的每個模塊功能進行評測(可以自己外接外設,方式不限),以及編寫所需的
    的頭像 發表于 03-28 03:25 ?841次閱讀

    N32L40XCL-STB開發板模塊評測任務大挑戰UART

    本文主要對通過RT-Thread Studio對國民技術開發板N32L40XCL-STB 進行UART外設配置,實現開發板串口功能。
    的頭像 發表于 08-09 15:25 ?824次閱讀
    <b class='flag-5'>N32L40XCL-STB</b><b class='flag-5'>開發板</b><b class='flag-5'>模塊</b><b class='flag-5'>評測</b>任務大挑戰<b class='flag-5'>之</b>UART

    國民技術N32G45XCL-STB_(LQFP48)_開發板

    國民技術N32G45XCL-STB_(LQFP48)_開發板
    發表于 10-18 16:13 ?0次下載

    國民技術N32G45XCL-STB_(LQFP48)開發板

    國民技術N32G45XCL-STB_(LQFP48)開發板
    發表于 10-18 16:13 ?2次下載