请问一下7S64中的SPI这样初始化正确吗?

[复制链接]
 楼主| 小小电子 发表于 2007-11-1 09:53 | 显示全部楼层 |阅读模式
我是对照数据手册写的;可是我用示波器测SPCK和MOSI脚都无输出??<br />哪位好心的给看看??<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_PMC_SCER&nbsp;=&nbsp;0x00000001;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//处理器时钟使能。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_PMC_PCER&nbsp;=&nbsp;(1&lt&ltAT91C_ID_SPI);&nbsp;&nbsp;//SPI时钟使能。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_PIOA_ASR=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA11_NPCS0&nbsp;&nbsp;)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA12_MISO&nbsp;&nbsp;&nbsp;)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA13_MOSI&nbsp;&nbsp;&nbsp;)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA14_SPCK&nbsp;&nbsp;&nbsp;);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//相应管脚设置为设备A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;AT91C_PIOA_PDR=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA11_NPCS0&nbsp;&nbsp;)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA12_MISO&nbsp;&nbsp;&nbsp;)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA13_MOSI&nbsp;&nbsp;&nbsp;)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((unsigned&nbsp;int)&nbsp;AT91C_PA14_SPCK&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//相应管脚设置为设备模式<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_SPI_CR&nbsp;=&nbsp;AT91C_SPI_SWRST;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//复位SPI.&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_SPI_MR&nbsp;=&nbsp;AT91C_SPI_MSTR&nbsp;|&nbsp;AT91C_SPI_PS_FIXED&nbsp;&nbsp;|&nbsp;AT91C_SPI_MODFDIS&nbsp;|&nbsp;0xE0000&nbsp;|(0&lt&lt3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//模式寄存器设置:主机模式|固定外设|错误检测模式禁用|片选0|时钟为MCK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_SPI_IDR&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//中断禁止。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_SPI_CR&nbsp;=&nbsp;AT91C_SPI_SPIEN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能SPI.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*AT91C_SPI_TDR&nbsp;=&nbsp;0x0000a0f0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!(AT91C_BASE_SPI-&gtSPI_SR&nbsp;&&nbsp;AT91C_SPI_TDRE)){;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}
zusen 发表于 2007-11-1 13:10 | 显示全部楼层

给你参考

void&nbsp;SPI_init(void)<br />{<br />//PMC_PCER=(AT91C_PA12_MISO|AT91C_PA13_MOSI|AT91C_PA14_SPCK|AT91C_PA11_NPCS0);<br />PMC_PCER=0x20;<br />//PIO外设功能时钟始能<br /><br />PIO_PDR=(AT91C_PA12_MISO|AT91C_PA13_MOSI|AT91C_PA14_SPCK|AT91C_PA11_NPCS0);<br />//PIO使能引脚的外设功能<br /><br />PIO_ASR=(AT91C_PA12_MISO|AT91C_PA13_MOSI|AT91C_PA14_SPCK|AT91C_PA11_NPCS0);<br />//外设A分配给SPI外设A功能<br /><br /><br /><br />SPI_CR=AT91C_SPI_SPIEN&nbsp;;<br />//允许SPI口<br />SPI_MR=(AT91C_SPI_MSTR|AT91C_SPI_PS_FIXED|AT91C_SPI_MODFDIS|AT91C_SPI_DLYBCS);<br />//主机模式,不分频,固定片选0,禁止错误检测<br />SPI_CSR=(AT91C_SPI_NCPHA|AT91C_SPI_CSAAT|AT91C_SPI_BITS_8|(12&lt&lt8)|AT91C_SPI_DLYBS|AT91C_SPI_DLYBCT);<br />//8位数据,传输完成后片选保持,48M/12分频,传输前延时255,连续传输延时255&nbsp;AT91C_SPI_SCBR<br /><br /><br /><br />}<br /><br />void&nbsp;SPI_send_byte(unsigned&nbsp;int&nbsp;data)&nbsp;&nbsp;//SPI发送一个字节的数据<br />{<br />&nbsp;SPI_TDR=data;<br />&nbsp;while((SPI_SR&AT91C_SPI_TDRE)==0)&nbsp;{;}&nbsp;&nbsp;&nbsp;//等待数据发送完成&nbsp;AT91C_SPI_TXEMPTY<br /><br />}
 楼主| 小小电子 发表于 2007-11-1 13:37 | 显示全部楼层

恩 好的 我中午再试试

  
 楼主| 小小电子 发表于 2007-11-2 11:26 | 显示全部楼层

还是有问题 我用示波器看了一下

发现输出和输入脚波形正确&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不过SCLK没有脉冲。
 楼主| 小小电子 发表于 2007-11-3 14:01 | 显示全部楼层

沉下去了 我顶

  
 楼主| 小小电子 发表于 2007-11-3 16:16 | 显示全部楼层

不好意思 已经查明是硬件问题

  
Swd21ic 发表于 2007-11-4 11:30 | 显示全部楼层

~~???

给了API为什么不用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

181

帖子

1

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