MS91051是一款適用于 (NDIR) 傳感應用的可配置放大器,它內置了兩級可選增益的放大器。第一級可選246、41倍增益,第二級可選4、8、16、32倍增益,而在兩極之間,可以外加濾波器,不需要外加濾波器則可以直連。兩級放大器的基準電壓則可以通過(guò)CMOUT腳輸出,該基準電壓可以通過(guò)寄存器選擇1.15V或者2.59V。它還有內置的DAC,可以對失調電壓進(jìn)行補償,補償的方法為直接對第二級放大器的輸出進(jìn)行調整,DAC寄存器的每一個(gè)LSB可以調整34mV。 上述這些功能都需要通過(guò)SPI接口對內部寄存器進(jìn)行指令的讀寫(xiě)操作,而不進(jìn)行讀寫(xiě)操作,MS91051上電沒(méi)有任何功能(重新上電則寄存器數據清空,需要重新讀寫(xiě))。但是在初次使用中,會(huì )出現無(wú)法進(jìn)行通訊的情況,且規格書(shū)中寫(xiě)的較為復雜,基于這種情況,就有了這一份MS91051的調試說(shuō)明,以方便進(jìn)行初次使用。為了方便調試,調試過(guò)程中的SPI通訊速率建議先用20KHZ左右,調通后,可以再對通訊速率進(jìn)行提升。 圖一是MS91051的推薦線(xiàn)路圖,C6C7是電源端的濾波電容;C1C2為耦合電容;C5為CMOUT的濾波電容;R1R2C3C4為A0和A1腳之間的濾波電路,可以根據需要去掉或者修改;R3是SDIO的上拉電阻;R4C8是輸出的濾波電路,可根據需要去掉或修改。 圖二是我司的測試電路,該方案中,與MS91051進(jìn)行通訊的MCU,我司選擇的是MS616F512NS,它的封裝是QFN48,且有0.1uA的關(guān)斷功耗,可以滿(mǎn)足正常的使用。當IO口需求較大時(shí),還有LQFP100的MS616F512可以選擇。 電路連接較為簡(jiǎn)單,功能只是為了與MS91051進(jìn)行通訊。器件JTAG1是MS616F512NS的JTAG接口,是為了方便在線(xiàn)調試。MCU的P1.0接SDIO腳,P1.1接SCLK腳,P1.2接CSB腳。 接下去就是調試方法,因為調試過(guò)程中不需要進(jìn)行芯片選擇,所以前面三部中CSB腳一直置低。 1、第一步是使用MS616F512NS調試出能被MS91051識別到的數據 圖三是MS91051規格書(shū)中的數據時(shí)序,C7讀寫(xiě)控制位,0為寫(xiě)1為讀;C6到C4固定為0;C3到C0是寄存器的地址,0x0是器件配置,0x1是DAC配置,0xF是SDIO模式使能;D7到D0為配置數據,詳情請看規格書(shū)。 MS91051的SPI是上升沿為數據采集點(diǎn)。我司寫(xiě)的是0x00(寫(xiě)模式,器件配置)+0x60(IN1輸入,PGA1 PGA2打開(kāi),由PGA1到PGA2,CMOUT輸出1.15V,GAIN2=4,GAIN1=250),程序在該文件最后,波形如下圖(請使用示波器監測該波形,邏輯分析儀有時(shí)候無(wú)法發(fā)現問(wèn)題) 2、將調試出來(lái)的波形寫(xiě)入MS91051的SPI管腳,此時(shí)MS91051的外圍不需要全接,可以按下圖連接 寫(xiě)入后,測量CMOUT腳的電壓,此時(shí)電壓應該為1.15V左右。若有1.15V輸出,則MS91051的寫(xiě)數據已經(jīng)調試成功;若無(wú),則檢查此時(shí)單片機輸出波形是否正常,或者更換新的MS91051進(jìn)行嘗試。 3、對MS91051內部寄存器進(jìn)行讀操作,需要先讓MS91051進(jìn)入SDIO模式,這時(shí)候需要寫(xiě)入連續的序列0xFE和0xED(即寫(xiě)入0x0F+0XFE,再寫(xiě)0x0F+0XED),寫(xiě)除了這個(gè)序列以外的任何序列都會(huì )脫離該模式。進(jìn)入SDIO模式的波形如下: 進(jìn)入SDIO模式后,我司選擇的是讀取DAC寄存器的值,寫(xiě)0x81,將P1.0改為輸入,加延時(shí),再給SCLK腳提供一個(gè)時(shí)鐘信號,SDIO就會(huì )有寄存器的數據輸出。SDIO的數據會(huì )在SCLK下降沿改變,所以可以在SCLK上升沿之前讀取數據。 因為程序中設置DAC寄存器值為0x80,所以讀到的值也為0x80: 當需要退出該SDIO模式,進(jìn)入寫(xiě)模式時(shí),可以寫(xiě)入0x0F+0x00,這時(shí)候再進(jìn)行讀數據操作,讀取到的會(huì )是0xFF(因為有5.1K上拉,所以讀到的信號每一位都為1): 4、CSB的使用,CSB只需要在數據前拉低,寫(xiě)完數據后拉高即可,但是CSB需要10ns的建立時(shí)間,所以不能在拉低CSB的同時(shí)寫(xiě)數據,以寫(xiě)0x00+0x60為例: P1OUT = 0x06; _NOP(); WRITE(0x00); WRITE(0x60); P1OUT = 0x06; 在CSB和數據之間可以加一個(gè)空指令,以保證CSB的建立。 以上四步都調試成功后,則可以根據自己的需要,對SCLK的SPI頻率進(jìn)行更改,對內部寄存器進(jìn)行配置和對外圍器件進(jìn)行修改,以滿(mǎn)足程序與硬件的需求。 |