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