打印
[ZLG-ARM]

2131的SSP的SPI主机连24位的ADC LTC2440从机,接收32位的转换结果

[复制链接]
3712|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wjxwjx|  楼主 | 2007-6-29 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADC, LTC, spi, se, ST
我想用LPC2131的SSP使用SPI模式主机与24位的ADC LTC2440从机相连,接收32位的转换结果,接线方式如下:
  LPC2131       LTC2440
   SSEL1----------CS
   SCK1-----------SCK
   MISO1----------SDO
   MOSI1----------SDI
         
  当(cpol=0,cpha=0)时序与LTC2440的是相匹配的,但是在连续两帧传输时,接收一帧16位后,SSEL电平被拉高,这会中断LTC2440的传输,导致后面的32位结果的后16位接收不到,应该怎么办?   
  
However, in the case of continuous back-to-back transmissions, the SSEL signal must be pulsed HIGH between each data word transfer. This is because the slave select pin freezes the data in its serial peripheral register and does not allow it to be altered if the CPHA bit is logic zero. Therefore the master device must raise the SSEL pin of the slave device between each data transfer to enable the serial peripheral data write. On completion of the continuous transfer, the SSEL pin is returned to its idle state one SCK period after the last bit has been captured.

    数据手册中说:两帧数据间CS必须拉高是因为当cpha=0时,从机选择针冻结了在串行外设寄存器中的数据而不允许改变.

    如果在接线时,不用LPC2131的SSEL1引脚功能而将其设置为 I/O 口控制LTC2440的CS,是不是会解决接收一帧16位后,SSEL电平被拉高因而中断LTC2440的传输的问题.

还有一个问题,当SSP做主SPI时,数据手册上说只有FIFO中有数据才能启动发送,并同时接收从机数据,那样的话,主机是不是要一次写入2帧16位的数据才能接收到2帧16位的从机结果,

相关下载

相关帖子

沙发
wjxwjx|  楼主 | 2007-7-7 19:10 | 只看该作者

没有人知道吗

使用特权

评论回复
板凳
wjxwjx|  楼主 | 2007-7-7 19:30 | 只看该作者

关于FIFO

关于SSP部分的内容nxp的数据手册不如ST写的详细,ST关于FIFO是10字发送,10字接收,而且还有软件包

使用特权

评论回复
地板
yyf196| | 2007-8-2 16:57 | 只看该作者

SPI好贴,顶起来

读多字节时,用SPI寄存器容易出错,建议你用I/O口模拟方式读。

使用特权

评论回复
5
zlgARM| | 2007-8-2 17:17 | 只看该作者

wjxwjx

您好:
    直接使用硬件SPI是可以的,不需要IO模拟。楼主考虑把SSEL功能所在脚作GPIO用。手动产生ADC所需要的SSEL时序。

使用特权

评论回复
6
wjxwjx|  楼主 | 2007-8-5 22:43 | 只看该作者

zlgARM

首先感谢zlgARM的指点!

我想确认一下SSP的SSEL引脚用作GPIO,你们做过测试没有?因为在数据手册中,关于SPIO部分有明确的说明

“On the LPC213x (unlike earlier Philips ARM devices) the SSEL0 pin can be used for a different function when the SPI0 interface is only used in Master mode. For example, pin hosting the SSEL0 function can be configured as an output digital GPIO pin and used to select one of the SPI0 slaves.”

但是关于SSP的部分确没有!

另外我想知道SSP的关于“8-frame FIFOs for both transmit and receive”

1、8-frame FIFOs是8帧*16位的还是8帧*8位的?

2、8帧FIFO对于发送和接收是怎样分配的,4帧发送,4帧接收吗?

3、在接收LTC2440的32数据时,我应该连写2帧16位数据到SSPDR,然后连读2次SSPDR得到结果,还是写1次16位,读1次得到16位结果,然后再写1次16位,再读一次得到另外的16位结果?

使用特权

评论回复
7
zlgARM| | 2007-8-6 06:25 | 只看该作者

wjxwjx

您好:
    2131 SPI0和SPI1的SSEL功能所在脚都可以用作GPIO。一旦明白了这一点,所有问题就简化为,如何用GPIO产生对方所需的时序。这样是否简单一点了?此外,能否作GPIO,您完全可以作个实验验证,不用担心会把芯片搞坏的。很多问题,如果找不到答案,可以自己动手作试验。我们不仅是芯片的学习者,也是芯片的研究者。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

36

帖子

0

粉丝