若STM32F10x连LTC2440,CPU需要提供一个I/O做片选。
一、若CPU的SPI做主机: 1、先用I/O发低电平片选信号, 2、然后向SPI写一个16位数,这样产生16个CLK,接收32位A/D结果的前16位, 3、等产生发送完中断后,再向SPI写一个16数,又产生16个CLK,接收后16位结果, 4、再用I/O发高电平片选信号,结束数据传输, 5、再用软件将两个16位数合成一个32位结果。
二、若CPU的SPI做从机: 1、先用I/O发低电平片选信号,LTC2440开始连输出32个CLK并发送32位数据, 2、等SPI接收了16位数后产生中断,先读出这个数,此时SPI数据接收寄存器为空,然后CPU继续接收后16位数, 3、再用I/O发高电平片选信号,结束数据传输, 4、再用软件将两个16位数合成一个32位结果。
在CPU做从机时是不是只要CPU速度够快,在半个CLK时钟周期内读出前16位数,就不会耽误后面16位数的接收。
|