SPI与ads8345

来源:互联网 发布:淘宝宝贝怎么分类管理 编辑:程序博客网 时间:2024/06/02 02:49

这段时间专注于对stm32外设的学习,把自己的学习心得和大家分享。

通过spi控制ads8345模数转换,涉及spi和ads8345两个操作对象。


一ads8345

1基本信息:位数-16位,通道数-8(8通道单端输入或四通道差分输入),输出形式-串行,功能-模数转换,转换速率-100KHz。

2.这是引脚图,


DCLK输入时钟信号,决定实际转换速率。CS片选。Din输入控制字,上升沿锁存。Dout输出转换结果,下降沿输出。COM用于模拟输入的常用参考(例如量程Vcom-Vref~Vcom+Vref),一般接Vref。SHDN低功耗待机模式。(可以不用)BUSY工作时输出低电平,不工作时(cs为高)输出高阻抗。

3.控制位


S为开始位(为1),A2A1A0通道选择位,Bit2是单端或差分选择位,Bit1和Bit0用于掉电模式选择和时钟模式选择。


11总是上电 00每个转换之间掉电 10内部时钟模式 01保留待将来使用

****关于时钟模式的要求:外部时钟转移数据进出设备,第一次上电时必须设置时钟,时钟模式选择切换时需要一个额外的转换周期,每个转换间应设为掉电模式

实际使用时,Bit1,Bit0一般直接设为11。


通道选择注意,对应的值与实际通道并不吻合,应按参考手册设置。

4.时序图


前八个时钟周期用于SPI发送控制字给ads8345,接下来一个时钟周期用于BUSY=1(这导致转换结果需要左移一位,因为SPI最少一次传输或接受8位),再接下来16个时钟周期用于SPI发送ads8345转换结果,LSB位传送时,spi发送第二个控制字的MSB位(bit7)。以24个时钟周期为一个转换周期,所以转换速率=时钟周期速率/24。

5.数据格式


This table represents the ideal output code for the given input voltage and does not include the effects of offset, gain error, or noise

这个结果只是理论值,因为busy占用了一个时钟周期的关系,需要将转换结果左移一位。

上图表明了转换结果只是一个补码,需要转换程实际值。当模拟信号<Vref,采集量程从-Vref到Vref-1LSB,这种好处是能采到负值信号,当模拟信号>=Vref,量程变为0到2Vref。但是无论两成如何变化,0~Vref-1LSB对应的码制不变。

二 SPI 

1使用SPI,要会看懂这些图

结构图


主从设备示意图


时钟极性配置图


全双工主模式时序图


四个引脚:MISO,MOSI,SCLK,NSS

数据发送过程:数据写入发送缓冲器时,发送过程开始。发送第一位数据时,数据字被并行传入移位寄存器(此时TXE将开始被置位),然后串行移出到MOSI脚

数据接收过程:在最后采样时钟沿,RXNE被置位,移位寄存器接收的数据传送到接收缓冲器。

2.SPI设置


时钟极性与ads8345的时序图有关,空闲为低,上升沿锁存。数据长8位(发送一次,接受两次),MSB在前。分频时要注意不能超过ads8345的转换速率限制。

3.通道转换


SPI第一次发送数据为控制字,第二三次为提供时钟信号。第一次接收数据舍弃,第二三次接收数据才是目标数据,再将目标数据进行左移,转换成实际值。

SPI使用特点:发送一次,接受一次。并不建议完全按照那张时序图


觉得还行就点顶···


1 0