打印

请教:S3C2410数据手册SPI部分,NSS引脚

[复制链接]
4620|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linnaldf|  楼主 | 2008-7-16 11:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问这段话是什么意思:
When the SPI is a master, nSS pin is used to check multi-master error, provided the SPPIN's ENMUL bit is
active, and another GPIO should be used to select a slave.
是不是配置为:SPI主机,使能ENMUL检测,就一定要使用另外一个GPIO作为NSS引脚,这里的NSS用来做什么?怎么检测多主机冲突?这是怎么的一个工作过程?

相关帖子

沙发
阿南| | 2008-7-16 18:00 | 只看该作者

就是SPI的片选信号,当它作为SPI从机的时候有用

使用特权

评论回复
板凳
linnaldf|  楼主 | 2008-7-17 09:12 | 只看该作者

S3C2410的SPI主机方式时/SS引脚使用疑问

  我觉得问题还没有弄清楚,以NSS0为例子.
  首先:NSS0可以影射到三根引脚:GPG2,GPE3,GPD15.
  然后看2410对SPI的一些描述:
  (1)SPI接口描述
  SPIMISO[1:0]- IO- SPIMISO is the master data input line, when SPI is configured as a master. When SPI is configured as a slave, these pins reverse its role.
  SPIMOSI[1:0] -IO -SPIMOSI is the master data output line, when SPI is configured as a master. When SPI is configured as a slave, these pins reverse its role.
  SPICLK[1:0] -IO -SPI clock
  nSS[1:0]  -I -SPI chip select(only for slave mode),这里说只针对从机模式.
  (2)状态寄存器的Multi Master Error Flag描述
  This flag is set if the nSS signal goes to active low while
the SPI is configured as a master, and SPPINn's ENMUL bit is multi master errors detect mode. MULF is cleared by reading SPSTAn.
  0 = not detect, 1 = multi master error detect
  (3)SPI PIN CONTROL REGISTER寄存器描述
  When the SPI system is enabled, the direction of pins, except nSS pin, is controlled by MSTR bit of SPCONn register. The direction of nSS pin is always input.(这里说NSS永远作为输入)
  When the SPI is a master, nSS pin is used to check multi-master error, provided the SPPIN's ENMUL bit is active, and another GPIO should be used to select a slave.(这里说要选择另外一个GPIO来选择从机,那NSS0影射到哪个引脚?)
  If the SPI is configured as a slave, the nSS pin is used to select SPI as a slave by one master.
  其中的Multi Master error detect Enable (ENMUL)标志描述:
  The /SS pin is used as an input to detect multi master error when the SPI system is a master.
  0 = disable (general purpose)
  1 = multi master error detect enable
  
  接着:如果做为从机,这点很好理解.按照SPI协议,肯定要有/SS引脚.这时,NSS0可以影射到3根引脚的任何一根作为NSS0输入.(这里有个疑问,如果把3根引脚同时影射为NSS0会有什么结果?)
  
  最后:如果作为主机,NSS0影射到哪个引脚?是不是有以下几种情况:
  (1)选择一根GPIO线做输出(不包括上面提到的可以影射到NSS0的三根引脚:GPG2,GPE3,GPD15),连接到从机的/SS,这时,普通GPIO根本不能检测多主机冲突.
  (2)从机的/SS管脚总是接低电平,主机没有任何引脚输出来选择从机,这种情况应该也是可以.
  (3)选择可以影射到NSS0的三根引脚之一:GPG2,GPE3,GPD15,但这里不影射为/SS,只作普通GPIO,作为从机的/SS输入,这时是不是也不能检测多主机冲突?
  (4)选择可以影射到NSS0的三根引脚之一:GPG2,GPE3,GPD15,而且是配置为/SS功能,作为输出来控制从机的/SS引脚.这种情况有很多疑问:作为主机,哪根引脚可以作为输出来控制从机的/SS,GPG2,GPE3,GPD15能不能用来做这种功能?检测多主机冲突要求S3C2410与从机怎么个连接方法?
     特别是第(4)种情况,总觉得跟数据手册说的很多出入.

  看看AVR单片机的描述,比较清楚,但疑问,就是SS配置为输出,能不能检测到多主机冲突?它这里说配置为输入时可以检测.
  SS 引脚的功能
  从机模式:当SPI 配置为主机时,从机选择引脚SS 总是为输入。SS 为低将激活SPI 接口,MISO成为输出( 用户必须进行相应的端口配置) 引脚,其他引脚成为输入引脚。当SS 为高时所有的引脚成为输入, SPI 逻辑复位,不再接收数据。SS引脚对于数据包/字节的同步非常有用,可以使从机的位计数器与主机的时钟发生器同步。当SS 拉高时SPI从机立即复位接收和发送逻辑,并丢弃移位寄存器里不完整的数据。
  主机模式:当SPI 配置为主机时(MSTR 的SPCR 置位),用户可以决定SS 引脚的方向。若SS 配置为输出,则此引脚可以用作普通的I/O 口而不影响SPI 系统。典型应用是用来驱动从机的SS 引脚。如果SS 配置为输入,必须保持为高以保证SPI 的正常工作。若系统配置为主机,SS 为输入,但被外设拉低,则SPI 系统会将此低电平解释为有一个外部主机将自己选择为从机。为了防止总线冲突, SPI 系统将实现如下动作:
  1. 清零SPCR 的MSTR 位,使SPI 成为从机,从而MOSI 和SCK 变为输入。
  2. SPSR 的SPIF 置位。若SPI 中断和全局中断开放,则中断服务程序将得到执行。因此,使用中断方式处理SPI 主机的数据传输,并且存在SS 被拉低的可能性时,中断服务程序应该检查MSTR 是否为"1”。若被清零,用户必须将其置位,以重新使能SPI 主机模式。

  还请啊南和大家多多指教
  

使用特权

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

本版积分规则

27

主题

70

帖子

1

粉丝