前言
某客戶開發(fā)一款高精度工業(yè)測量儀器,打算使用 STM32H7+外置高精度 ADC 采樣的分離方案來實現(xiàn)??蛻暨x取了一款所屬行業(yè)內比較通用的 ADC 采樣芯片。在讀取該 ADC芯片手冊后,客戶發(fā)現(xiàn)該款 ADC 采樣芯片使用 MCU 標準 SPI 與之通信存在問題,手冊里面也推薦使用 DSP/FPGA 的來實現(xiàn),客戶一下就犯難了。為了降低成本和開發(fā)周期,客戶想使用 MCU 來替代 DSP/FPGA 與 ADC 采樣芯片的高速通信。
現(xiàn)場調研與問題分析
根據(jù)客戶提供的信號采集板上使用的 ADC 數(shù)據(jù)手冊及現(xiàn)場反饋。
該 ADC 采樣芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,在 DRDY 信號的下降沿通過 DOUT0~DOUT7 引腳將數(shù)據(jù)輸出到 DSP/FPGA??蛻羰褂肧TM32H7 的 SPI Slave 模式與該 IC 進行通信,采用 Software NSS 工作模式來接收 Master 的數(shù)據(jù)。
問題分析與解決
顯然使用標準 SPI 與該芯片進行通信是行不通的,再次聚焦到客戶 DRDY 信號并未使用和充分利用,能否利用 DRDY 信號來濾除 Stop 期間的干擾信號呢?
筆者也再次查閱 RM 后發(fā)現(xiàn) STM32H7 的 SPI NSS 脈沖模式(RM 中稱為 TI 模式)。在本文中統(tǒng)稱為 NSS 脈沖模式,STM32H7 的 NSS 脈沖模式其核心要點如下:
- 通過設置 SPI_CFG2 寄存器的 SP[2:0]位來使能 SPI 工作在 NSS 脈沖模式,當 SPI 工作于脈沖模式時,SCK 和 SS 引腳的信號極性、相位、字節(jié)序是固定的,不需要配置 CPOL,CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相關寄存器位。
- SPI NSS 脈沖模式通信時序如下圖,與標準 SPI 通信相比差異如下:啟動數(shù)據(jù)傳輸前,NSS 會被拉高并維持一個時鐘周期(NSS 脈沖)。數(shù)據(jù)幀的傳輸過程起止于 2 個 NSS 脈沖之間(前一幀 LSB 開始拉高 SS,前一幀 LSB 結束后拉低 NSS 開始下一幀傳輸)。
在時鐘 SCK 的上升沿開始發(fā)送數(shù)據(jù),在時鐘 SCK 的下降沿進行采樣和接收。
所以,STM32H7 的 SPI 的 NSS 脈沖模式時序剛好與該 ADC 芯片是匹配的。
那么我們將客戶的接法進行改進,并配置 STM32H7 的 SPI 工作于 NSS 脈沖模式,經(jīng)過客戶反復驗證工作正常。