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

[复制链接]
 楼主| linnaldf 发表于 2008-7-16 11:53 | 显示全部楼层 |阅读模式
请问这段话是什么意思:<br />When&nbsp;the&nbsp;SPI&nbsp;is&nbsp;a&nbsp;master,&nbsp;nSS&nbsp;pin&nbsp;is&nbsp;used&nbsp;to&nbsp;check&nbsp;multi-master&nbsp;error,&nbsp;provided&nbsp;the&nbsp;SPPIN's&nbsp;ENMUL&nbsp;bit&nbsp;is<br />active,&nbsp;and&nbsp;another&nbsp;GPIO&nbsp;should&nbsp;be&nbsp;used&nbsp;to&nbsp;select&nbsp;a&nbsp;slave.<br />是不是配置为:SPI主机,使能ENMUL检测,就一定要使用另外一个GPIO作为NSS引脚,这里的NSS用来做什么?怎么检测多主机冲突?这是怎么的一个工作过程?
阿南 发表于 2008-7-16 18:00 | 显示全部楼层

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

  
 楼主| linnaldf 发表于 2008-7-17 09:12 | 显示全部楼层

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

  我觉得问题还没有弄清楚,以NSS0为例子.<br />  首先:NSS0可以影射到三根引脚:GPG2,GPE3,GPD15.<br />  然后看2410对SPI的一些描述:<br />  (1)SPI接口描述<br />  SPIMISO[1:0]-&nbsp;IO-&nbsp;SPIMISO&nbsp;is&nbsp;the&nbsp;master&nbsp;data&nbsp;input&nbsp;line,&nbsp;when&nbsp;SPI&nbsp;is&nbsp;configured&nbsp;as&nbsp;a&nbsp;master. When&nbsp;SPI&nbsp;is&nbsp;configured&nbsp;as&nbsp;a&nbsp;slave,&nbsp;these&nbsp;pins&nbsp;reverse&nbsp;its&nbsp;role.<br />  SPIMOSI[1:0]&nbsp;-IO&nbsp;-SPIMOSI&nbsp;is&nbsp;the&nbsp;master&nbsp;data&nbsp;output&nbsp;line,&nbsp;when&nbsp;SPI&nbsp;is&nbsp;configured&nbsp;as&nbsp;a&nbsp;master. When&nbsp;SPI&nbsp;is&nbsp;configured&nbsp;as&nbsp;a&nbsp;slave,&nbsp;these&nbsp;pins&nbsp;reverse&nbsp;its&nbsp;role.<br />  SPICLK[1:0]&nbsp;-IO&nbsp;-SPI&nbsp;clock<br />  nSS[1:0]&nbsp; -I&nbsp;-SPI&nbsp;chip&nbsp;select(only&nbsp;for&nbsp;slave&nbsp;mode),这里说只针对从机模式.<br />  (2)状态寄存器的Multi&nbsp;Master&nbsp;Error&nbsp;Flag描述<br />  This&nbsp;flag&nbsp;is&nbsp;set&nbsp;if&nbsp;the&nbsp;nSS&nbsp;signal&nbsp;goes&nbsp;to&nbsp;active&nbsp;low&nbsp;while<br />the&nbsp;SPI&nbsp;is&nbsp;configured&nbsp;as&nbsp;a&nbsp;master,&nbsp;and&nbsp;SPPINn's&nbsp;ENMUL bit&nbsp;is&nbsp;multi&nbsp;master&nbsp;errors&nbsp;detect&nbsp;mode.&nbsp;MULF&nbsp;is&nbsp;cleared&nbsp;by reading&nbsp;SPSTAn.<br />  0&nbsp;=&nbsp;not&nbsp;detect,&nbsp;1&nbsp;=&nbsp;multi&nbsp;master&nbsp;error&nbsp;detect<br />  (3)SPI&nbsp;PIN&nbsp;CONTROL&nbsp;REGISTER寄存器描述<br />  When&nbsp;the&nbsp;SPI&nbsp;system&nbsp;is&nbsp;enabled,&nbsp;the&nbsp;direction&nbsp;of&nbsp;pins,&nbsp;except&nbsp;nSS&nbsp;pin,&nbsp;is&nbsp;controlled&nbsp;by&nbsp;MSTR&nbsp;bit&nbsp;of&nbsp;SPCONn register.&nbsp;The&nbsp;direction&nbsp;of&nbsp;nSS&nbsp;pin&nbsp;is&nbsp;always&nbsp;input.(这里说NSS永远作为输入)<br />  When&nbsp;the&nbsp;SPI&nbsp;is&nbsp;a&nbsp;master,&nbsp;nSS&nbsp;pin&nbsp;is&nbsp;used&nbsp;to&nbsp;check&nbsp;multi-master&nbsp;error,&nbsp;provided&nbsp;the&nbsp;SPPIN's&nbsp;ENMUL&nbsp;bit&nbsp;is active,&nbsp;and&nbsp;another&nbsp;GPIO&nbsp;should&nbsp;be&nbsp;used&nbsp;to&nbsp;select&nbsp;a&nbsp;slave.(这里说要选择另外一个GPIO来选择从机,那NSS0影射到哪个引脚?)<br />  If&nbsp;the&nbsp;SPI&nbsp;is&nbsp;configured&nbsp;as&nbsp;a&nbsp;slave,&nbsp;the&nbsp;nSS&nbsp;pin&nbsp;is&nbsp;used&nbsp;to&nbsp;select&nbsp;SPI&nbsp;as&nbsp;a&nbsp;slave&nbsp;by&nbsp;one&nbsp;master.<br />  其中的Multi&nbsp;Master&nbsp;error&nbsp;detect Enable&nbsp;(ENMUL)标志描述:<br />  The&nbsp;/SS&nbsp;pin&nbsp;is&nbsp;used&nbsp;as&nbsp;an&nbsp;input&nbsp;to&nbsp;detect&nbsp;multi&nbsp;master error&nbsp;when&nbsp;the&nbsp;SPI&nbsp;system&nbsp;is&nbsp;a&nbsp;master.<br />  0&nbsp;=&nbsp;disable&nbsp;(general&nbsp;purpose)<br />  1&nbsp;=&nbsp;multi&nbsp;master&nbsp;error&nbsp;detect&nbsp;enable<br />  <br />  接着:如果做为从机,这点很好理解.按照SPI协议,肯定要有/SS引脚.这时,NSS0可以影射到3根引脚的任何一根作为NSS0输入.(这里有个疑问,如果把3根引脚同时影射为NSS0会有什么结果?)<br />  <br />  最后:如果作为主机,NSS0影射到哪个引脚?是不是有以下几种情况:<br />  (1)选择一根GPIO线做输出(不包括上面提到的可以影射到NSS0的三根引脚:GPG2,GPE3,GPD15),连接到从机的/SS,这时,普通GPIO根本不能检测多主机冲突.<br />  (2)从机的/SS管脚总是接低电平,主机没有任何引脚输出来选择从机,这种情况应该也是可以.<br />  (3)选择可以影射到NSS0的三根引脚之一:GPG2,GPE3,GPD15,但这里不影射为/SS,只作普通GPIO,作为从机的/SS输入,这时是不是也不能检测多主机冲突?<br />  (4)选择可以影射到NSS0的三根引脚之一:GPG2,GPE3,GPD15,而且是配置为/SS功能,作为输出来控制从机的/SS引脚.这种情况有很多疑问:作为主机,哪根引脚可以作为输出来控制从机的/SS,GPG2,GPE3,GPD15能不能用来做这种功能?检测多主机冲突要求S3C2410与从机怎么个连接方法?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;特别是第(4)种情况,总觉得跟数据手册说的很多出入.<br /><br />  看看AVR单片机的描述,比较清楚,但疑问,就是SS配置为输出,能不能检测到多主机冲突?它这里说配置为输入时可以检测.<br />  SS&nbsp;引脚的功能<br />  从机模式:当SPI&nbsp;配置为主机时,从机选择引脚SS&nbsp;总是为输入。SS&nbsp;为低将激活SPI&nbsp;接口,MISO成为输出(&nbsp;用户必须进行相应的端口配置)&nbsp;引脚,其他引脚成为输入引脚。当SS&nbsp;为高时所有的引脚成为输入,&nbsp;SPI&nbsp;逻辑复位,不再接收数据。SS引脚对于数据包/字节的同步非常有用,可以使从机的位计数器与主机的时钟发生器同步。当SS&nbsp;拉高时SPI从机立即复位接收和发送逻辑,并丢弃移位寄存器里不完整的数据。<br />  主机模式:当SPI&nbsp;配置为主机时(MSTR&nbsp;的SPCR&nbsp;置位),用户可以决定SS&nbsp;引脚的方向。若SS&nbsp;配置为输出,则此引脚可以用作普通的I/O&nbsp;口而不影响SPI&nbsp;系统。典型应用是用来驱动从机的SS&nbsp;引脚。如果SS&nbsp;配置为输入,必须保持为高以保证SPI&nbsp;的正常工作。若系统配置为主机,SS&nbsp;为输入,但被外设拉低,则SPI&nbsp;系统会将此低电平解释为有一个外部主机将自己选择为从机。为了防止总线冲突,&nbsp;SPI&nbsp;系统将实现如下动作:<br />  1.&nbsp;清零SPCR&nbsp;的MSTR&nbsp;位,使SPI&nbsp;成为从机,从而MOSI&nbsp;和SCK&nbsp;变为输入。<br />  2.&nbsp;SPSR&nbsp;的SPIF&nbsp;置位。若SPI&nbsp;中断和全局中断开放,则中断服务程序将得到执行。因此,使用中断方式处理SPI&nbsp;主机的数据传输,并且存在SS&nbsp;被拉低的可能性时,中断服务程序应该检查MSTR&nbsp;是否为&quot;1”。若被清零,用户必须将其置位,以重新使能SPI&nbsp;主机模式。<br /><br />  还请啊南和大家多多指教<br />  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

70

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部