米爾T153開(kāi)發(fā)板AD7616高速ADC采集系統(tǒng)詳解
掃描二維碼
隨時(shí)隨地手機(jī)看文章
PART 01 項(xiàng)目概述
1.1 技術(shù)背景
米爾MYD-YT153開(kāi)發(fā)板搭載全志T153處理器,提供LocalBus(LBC)并行總線接口,適合連接高速外設(shè)。AD7616是ADI公司推出的16位高精度并行ADC,具有16通道差分輸入,廣泛應(yīng)用于工業(yè)數(shù)據(jù)采集、儀器儀表等領(lǐng)域。
1.2 項(xiàng)目目標(biāo)
?驗(yàn)證MYD-YT153 LocalBus與AD7616的硬件兼容性
?提供完整的軟件驅(qū)動(dòng)實(shí)現(xiàn)方案
?評(píng)估系統(tǒng)在實(shí)際應(yīng)用中的性能表現(xiàn)
PART 02硬件平臺(tái)架構(gòu)
2.1 核心硬件組件
MYD-YT153開(kāi)發(fā)板和localbus接口
2.2 硬件連接要點(diǎn)
引腳一一對(duì)應(yīng):AD7616模塊通過(guò)J23接口直連開(kāi)發(fā)板
電源連接:需外接5V電源至模塊供電引腳
信號(hào)完整性:并行總線長(zhǎng)度應(yīng)盡量短,避免信號(hào)衰減
J23 localbus接口定義
MYD-YT153接入AD7616模塊
2.3 引腳沖突注意
T153處理器的LocalBus與RGMII2網(wǎng)絡(luò)接口存在引腳復(fù)用沖突:
?必須選擇編譯支持LocalBus的鏡像(LVDS或DSI顯示配置)
?同一時(shí)間只能使用一種功能
Localbus與RGMII2沖突
PART 03軟件環(huán)境配置
3.1 鏡像選擇根據(jù)存儲(chǔ)介質(zhì)選擇相應(yīng)鏡像:
注:所有鏡像均支持LocalBus功能。3.2 驅(qū)動(dòng)架構(gòu)// 驅(qū)動(dòng)層次應(yīng)用層:platform\allwinner\industry\localbus\lbc_ad7616_test\lbc_ad7616_test.c (用戶空間測(cè)試程序)驅(qū)動(dòng)層:bsp/drivers/lbc/sunxi_lbc_v2_drv.c(內(nèi)核驅(qū)動(dòng))硬件層:LocalBus控制器(T153內(nèi)置)
PART 04AD7616工作模式解析
4.1 測(cè)試代碼是否能正常工作直接運(yùn)行代碼,看下是什么現(xiàn)象:
Lbc_ad7616_test程序運(yùn)行結(jié)果
可以看到一共分三部分:
模式設(shè)置,設(shè)置了SEL[0-2]以及CS0片選,做了寄存器映射。
寄存器設(shè)置,針對(duì)0x02,0x04…0x27先寫(xiě)后度。
獲取結(jié)果,讀取每路通路結(jié)果,小數(shù)點(diǎn)后兩位。
4.2 AD7616模塊分析
結(jié)合芯片手冊(cè)《ad7616.pdf》和軟件源碼lbc_ad7616_test.c
程序運(yùn)行流程圖
init_gpio設(shè)置了GPIO_CH_SEL0,GPIO_CH_SEL1,GPIO_CH_SEL2都為0,結(jié)合手冊(cè)可以看到這是通路選擇管腳,當(dāng)軟件模式時(shí)需要設(shè)置為0x000。
CHSEL寄存器
AD7616_Set_Range(Range_0_V)里面設(shè)置RANGE_SEL0和RANGE_SEL1 為0,結(jié)合手冊(cè),發(fā)現(xiàn)時(shí)設(shè)置的軟件模式。
RNGSEL模式寄存器map_shared_reg_region 和map_chip_region 都是為了讀寫(xiě)寄存器做內(nèi)存映射。
run_ad7616_test 測(cè)試代碼關(guān)鍵,它一共分兩部分,初始化寄存器和讀數(shù)據(jù)。
adc寫(xiě)寄存器和獲取結(jié)果流程
通過(guò)查詢寄存器可以得到如下信息:
同樣方式,進(jìn)行總結(jié):
總結(jié)一下就是設(shè)置burst模式和啟用Sequencer模式,±5V量程。
好了,接著看測(cè)試邏輯發(fā)送一次CMD_SET_CONVST_IO 后,開(kāi)始讀取每個(gè)通道的值:
這個(gè)邏輯就比較清晰了,16個(gè)通道輪詢方式讀取,然后判斷最高位是否是1還是0做區(qū)別,最后做一個(gè)5V量程轉(zhuǎn)換后輸出小數(shù)點(diǎn)后2位。
結(jié)合上面寄存器分析,量程處理代碼比較隨意,應(yīng)該要把2.5V,5V,10V 用宏控制,并和量產(chǎn)轉(zhuǎn)換形成對(duì)于關(guān)系。
那么它的實(shí)際精度是多少,作為一個(gè)16bitADC,理論精度是?32768~+32767,當(dāng)sample_range=5(±5V)時(shí):
滿量程:10V
碼值范圍:65536個(gè)碼
1 LSB=10V/65536≈0.0001526V
也就是:
≈152.6μV/LSB
那釋放一下它的精度,不再控制輸出,把%6.2f改成%f即可。
printf("tsa: %p ch: %2d, data:0x%04x, voltage: %f\n", tsa, ch, data[ch], voltage_data);
接下來(lái)就涉及另一個(gè)問(wèn)題,采樣率到底是多少,其實(shí)就統(tǒng)計(jì)一下每秒這個(gè)讀取測(cè)試次數(shù)就知曉。
最后統(tǒng)計(jì)出來(lái)每秒15幀,那肯定不是真實(shí)水平,清空所有打印再試試:
此時(shí)可以看到每秒有接近9000次,由于每次采樣通道16,9000x16=144,000 samples/second,相當(dāng)于單通道144kSPS水平。
PART 05總結(jié)
通過(guò)本次測(cè)試,得出以下結(jié)論:
精度驗(yàn)證:AD7616在±5V量程下實(shí)際分辨率達(dá)到152.6 μV,滿足16位ADC標(biāo)稱性能。
速率驗(yàn)證:系統(tǒng)實(shí)際采樣率達(dá)到144 kSPS(單通道等效),雖未達(dá)到理論極限250 kSPS,但已滿足大多數(shù)應(yīng)用需求。
優(yōu)化效果:通過(guò)減少軟件開(kāi)銷(xiāo),性能提升顯著,證明系統(tǒng)瓶頸主要在軟件層面。
實(shí)用價(jià)值:MYD-YT153 + AD7616組合為嵌入式高速數(shù)據(jù)采集提供了經(jīng)濟(jì)高效的解決方案,適合工業(yè)自動(dòng)化、測(cè)試測(cè)量等應(yīng)用。





