我們是做傳感器相關(guān)產(chǎn)品的, 芯片缺貨以來,我們?cè)囉昧撕芏鄧a(chǎn)MCU,也基本全部切換到國產(chǎn)MCU的技術(shù)平臺(tái)上來. 但是目前MCU行業(yè)同質(zhì)化非常嚴(yán)重, 為了受眾多,基本上都集成了各種通訊口,支持LED,LCD,等等,沒有個(gè)性. 直到接觸到東微的MCU,從產(chǎn)品的主要功能上就能看到24BIT ADC這個(gè)超亮眼的參數(shù), 細(xì)看規(guī)格書后,發(fā)現(xiàn)它還集成有1-2級(jí)運(yùn)放. 這不就是為我們傳感器行業(yè)定制的嗎. 拿到DT5M4756R8L6的開發(fā)板后,我們開始了嘗試.但是整個(gè)嘗試過程曲折而有趣. 拿到手上直接復(fù)制了一個(gè)GPIO的點(diǎn)燈程序,編譯通過,但下載不了,經(jīng)過了多次群內(nèi)溝通,終于能下載程序并點(diǎn)燈. 在KEIL內(nèi)部,要注意調(diào)試工具選JLINK,以及編程用的地址空間.相關(guān)的圖片,我看前面分享的同學(xué)已經(jīng)貼了,我就不貼圖了. 我們公司主要的用途是將模擬信號(hào)轉(zhuǎn)為數(shù)字量,然后通過數(shù)字接口提供給用戶,所以我們重點(diǎn)關(guān)注了一下它的ADC工作流程. 東微的ADC空有24位,但其實(shí)它也并沒有拿它當(dāng)主要賣點(diǎn), 這顆芯片更像是為儀器儀表行業(yè)或者醫(yī)療器械行業(yè)做的量身定作,它花了不少的資源在UI這一塊,支持LED,LCD段碼屏等. 真正留給ADC用的資源并不多. 對(duì)于信號(hào)源不多的應(yīng)用還是能用的. 我們這次測試的本來是PH傳感器,但因?yàn)镻H傳感器的接口是BNC的,我們沒有找到合適的轉(zhuǎn)接頭來連到開發(fā)板上, 臨時(shí)用一個(gè)TDS探頭代替了PH探頭. 因?yàn)橹皇菧y試,所以并沒有從頭開始寫軟件, 在官方的DEMO上修改. 這個(gè)MCU的資料和STC看齊,所有信息都弄在一個(gè)文件里面, 參考代碼也是直接地址操作, 著實(shí)費(fèi)了點(diǎn)時(shí)間看源碼. 首先是系統(tǒng)時(shí)鐘,它外部的時(shí)鐘源只有一個(gè)32K晶振,其它的應(yīng)該是內(nèi)部時(shí)鐘源, 沒有去動(dòng)它的時(shí)鐘主頻, 默認(rèn)時(shí)鐘是64M,默認(rèn)的分頻是4分頻, 所以系統(tǒng)時(shí)鐘是64/4=16M. 那么ADC的時(shí)鐘頻率,用了這兩句代碼 #define CLK_ADC (uint32_t)0x00000080 CLK_Enable(CLK_ADC);//enable ADC CLK =4MHz //0x04000014ul是個(gè)ADC操作非常重要的寄存器 *(vu32 *)(0x04000014ul) = 0x00000000+(offset<<7)+(osr<<4)+(4<<12); //CLK_SELECT=0, adc tst bias_amp1=adc_tst[18:17] bias_amp0=adc_tst[16:15] bias_adc2=adc_tst[24:23] bias_adc1=adc_tst[22:21] bias_adc0=adc_tst[20:19] 與ADC控制的控制設(shè)置基本全在這個(gè)寄存器內(nèi) 關(guān)于ADC還有一個(gè)初始化寄存器, 0x04000010ul, 同樣的也沒有名字,我暫且叫它ADC信號(hào)源配置寄存器. 原文檔無法復(fù)制,花了點(diǎn)時(shí)間手碼到代碼里面了. 發(fā)出來,如果你們需要可以直接復(fù)制過去.
這上源碼里ADC初始化里面的3個(gè)參數(shù), 同樣的,沒有注釋, 靠見名知義,猜. 好了,那源碼起了個(gè)頭,要連硬件. 我們是有傳感器的轉(zhuǎn)接板,全部引出2.54的排針出來,用杜邦線連到開發(fā)板上
條件簡陋,先接了TDS中的NTC部分, 原來我們是用的單端接法,這次先嘗試了一下差分接法, 用到了P19以及P25兩個(gè)器件,在板子上壓力傳感器的旁邊. 壓力傳感器找不到我就沒有辦法了,壓力傳感器有個(gè)氣咀樣的東西. 繼續(xù)魔改源碼
目前還沒改源碼里的信號(hào)源, 可以看到源碼里面,用一個(gè)gain配置了兩種情況,一種有一級(jí)放大,一種無放大. 信號(hào)源分正端和負(fù)端, 我們用了ANN8以及ANP8這兩路,所以都配置為1000, 對(duì)照表我就不貼了,在規(guī)格書底部區(qū)域. 先改源碼再測試
源碼里 這兩數(shù)對(duì)應(yīng)的整數(shù)部分是,011111111111111111111111,所以其實(shí)有效的分辨精度是23位,并且實(shí)際ENOB只有19位,采樣頻率是1KHZ,并不算快. NTC的分壓法測試是非常簡單的,它的分壓電阻是100K,我們用的的 10K 3950的NTC, 這個(gè)分壓還是不太合理的,勉強(qiáng)測了一下, 精度不怎么好,不過穩(wěn)定性非常不錯(cuò). TDS部分也是分壓法測試,但是供電就不能用恒流供電了,需要用到變化的電源以及精選的分壓電阻.這個(gè)在開發(fā)板上不太好接線,全部引到我們的轉(zhuǎn)接板上面. 這個(gè)滲及到公司的一些細(xì)節(jié),不太好直接貼出來. 測試的結(jié)論是ADC非常穩(wěn)定, 但是操控過程有些繁瑣,建議封裝成不同的庫函數(shù), 以提高用戶的開發(fā)效率. 總結(jié)一下就是這顆DT5M4765非常適合有ADC要求,并且有傳統(tǒng)UI要求的應(yīng)用. 有一個(gè)非常非常非常人性化的功能,就是它本身可以對(duì)外輸入3.3,甚至1.8V. 要知道現(xiàn)在的傳感器,絕大多數(shù)都開始了3.3V供電,甚至1.8V供電, 如果MCU本身對(duì)外可以供這幾個(gè)電壓,那么省了很多LDO的工作 需要提高的是開發(fā)環(huán)境以及開發(fā)工具上的適配性. 并且文檔完全沒有按功能模塊分類整理,沒有目錄,這些都對(duì)開發(fā)者是個(gè)極大的挑戰(zhàn), 上下翻文檔非常費(fèi)時(shí)間. 源碼里面需要給寄存器命名,要有適當(dāng)?shù)淖⑨?否則有如錦衣夜行, 讓好的國貨不能傳遞到非常需要它的行業(yè)當(dāng)中去. |
-
單片機(jī)
+關(guān)注
關(guān)注
6032文章
44516瀏覽量
633032 -
mcu
+關(guān)注
關(guān)注
146文章
16992瀏覽量
350313 -
adc
+關(guān)注
關(guān)注
98文章
6438瀏覽量
544097 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4945瀏覽量
97195
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論