打印
[ZLG-ARM]

关于LPC2138的若干疑问

[复制链接]
1508|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Qvacation|  楼主 | 2007-8-13 08:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  我在学习LPC2138时,遇到很多问题,请教各位:
1。SPI部分:
1)SSEL信号,书上说这是个从机片选信号,那为什么周立功的书上例子操作74HC595上没有用它作片选信号呢?用它的话还不用手动调整片选的拉高,拉低。我考虑的原因:书上讲到“CPHA=1时,SSEL信号在数据传输之间总是保持未激活状态,当CPHA=1时,则不能保证这一点”,而书上的例子74HC595就是CPHA=1的情况,是不是这个原因(当CPHA=1时,则不能保证这一点)呢?附加的疑问:在NXP网站上的LPC2138/01 DataSheet上讲的和书上的相反“CPHA=0时,SSEL信号在数据传输之间总是保持未激活状态,当CPHA=1时,则不能保证这一点”,看了这些,我晕了,虽然是01版本,但是SSEL那个是通用于LPC2138于其01版本的。
2)同样是SPI部分,01版本的数据手册说每次的传输可以是8到16位,但这同样适用于非01版本吧?因为这一点没有标明是01版独有的。那寄存器S0SPCR,S0SPDR的操作都要改了?
3)SSPDR寄存器的描述:如果数据长度少于16位。软件必须对数据进行调整后再写入寄存器,“软件调整”什么意思?例程上的是8位传输,怎么没有“软件调整”?
  

相关帖子

沙发
zlgARM| | 2007-8-13 09:29 | 只看该作者

Qvacation

您好:
  首先纠正一下,从您的描述来看,您说的“SPI”实际上是SSP。SSP可用作SPI,但和SPI略有区别,所以这里要先将概念厘清一下。现在来答复您的问题:
  第一个问题,请您在本版面搜索“周工:LPC2210中有关SPI的若干疑问!”;
  第二个问题,查阅数据手册里对数据寄存器宽度的说明即可;
  第三个问题:假设SSP数据寄存器只有3位宽,这3位按地址的高低可称呼为低中高三位。那么SSP发送该寄存器里的数据是按照“先发低位bit,然后中位bit,接下来是高位bit”的顺序来的。也就是说,数据寄存器里低地址bit先发送。
  所以我们需要关心:一个变量data,它所存储的bit位是如何放到数据寄存器里的。但是,对于这一点,已经有固定的规则,即:变量里的数据位是按照地址位的高低一一对应地放入SSP数据寄存器的。即,变量的地址0数据位就放到数据寄存器的地址0……
  所以,我们在把数据送入SSP数据寄存器前,需要确保先出现的bit信息是在变量里的较低地址位。即:我们要确认,SSP总线上第一个要出现的bit信息位于变量的低地址,第二个要出现的bit信息位于变量的中地址……
  以上的说法看起来有些复杂,但是只要记住:“先发送的数据位要在较低地址位”这点即可,其它的无须操心。
  
  再以13位的数据发送为例。由于在C语言中,不存在13位长度的基本类型变量,那么您必须保证您的16位宽度的变量里,那13个有效数据位都在低13位的地址位上。这就是所谓的“软件调整”。
  以上只是个人看法,如果说得不对,还请大家指正。
  

使用特权

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

本版积分规则

54

主题

110

帖子

0

粉丝