[ZLG-ARM] 2131SPI主机问题

[复制链接]
1867|4
 楼主| fglswh 发表于 2007-11-27 09:23 | 显示全部楼层 |阅读模式
昨天又调试了一遍程序,还是不行,很奇怪,如果把开发板和计算机断开连接不通电很长一段时间,再连接起来,做2131的SPI主机实验,7段数码管会闪烁,但也不是正确的从零开始闪,并且到一个数就停了,7段数码管就不动了,以后无论怎么运行程序,数码管都不再变化,我用串口回传数据跟踪了一下:<br />uint8&nbsp;MSPI_SendData(uint8&nbsp;data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;p;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;29);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_SPDR&nbsp;=&nbsp;data;//赋值要发送的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;//p&nbsp;=&nbsp;SPI_SPSR;<br />&nbsp;&nbsp;&nbsp;&nbsp;//UART_SendByte(p);//这里接收的是0x00,发送前状态寄存器<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while((SPI_SPSR&nbsp;&&nbsp;0x80)&nbsp;==&nbsp;0)&nbsp;;//等待发送完毕<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//p&nbsp;=&nbsp;SPI_SPSR;<br />&nbsp;&nbsp;&nbsp;&nbsp;//UART_SendByte(p);//这里接收的是0x80,发送后状态寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;//p=SPI_SPDR;//读SPI_SPDR会清空SPIF标志,但读SPI_SPSR不清空!<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;UART_SendByte(SPI_SPDR);//这里回传的数据始终是00<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IOSET&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;29);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return(SPI_SPDR);<br />}<br /><br />为什么回传的数据始终是00呢?数据已经发过去了呀?为什么数码管不变化?<br />IODIR等都设置了,SPI初始化也没问题,用随机光盘上的程序也不行,难道是595的问题?
zlgarm 发表于 2007-11-27 10:44 | 显示全部楼层

re:~~~

再次检查初始化程序,特别是管脚的连接,还有开发板上跳线有没有设置好~~~
 楼主| fglswh 发表于 2007-11-27 11:11 | 显示全部楼层

跳线的设置

JP1(ISP):没有短接,也就是默认的设置<br />JP10:跳线全部选择的SPI功能项<br />JP11:选择的p0.7<br />别的就没什么跳线设置了,初始化程序:<br />PINSEL0&nbsp;=&nbsp;0x00005500;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置SPI管脚连接<br />PINSEL1&nbsp;=&nbsp;0x00000000;<br />IODIR&nbsp;=&nbsp;HC595_CS;<br /><br />void&nbsp;&nbsp;MSPI_Init(void)<br />{&nbsp;&nbsp;<br />//PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xFFFF00FF)&nbsp;|&nbsp;0x00005500;//&nbsp;设置管脚连接SPI<br />PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;(~(0xFF&nbsp;&lt&lt&nbsp;8)))&nbsp;|&nbsp;(0x55&nbsp;&lt&lt&nbsp;8)&nbsp;;<br />&nbsp;&nbsp;&nbsp;SPCCR&nbsp;=&nbsp;0x52;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置SPI时钟分频<br />&nbsp;SPCR&nbsp;&nbsp;=&nbsp;(0&nbsp;&lt&lt&nbsp;3)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CPHA&nbsp;=&nbsp;0,&nbsp;数据在SCK&nbsp;的第一个时钟沿采样<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;4)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CPOL&nbsp;=&nbsp;1,&nbsp;SCK&nbsp;为低有效<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;5)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;MSTR&nbsp;=&nbsp;1,&nbsp;SPI&nbsp;处于主模式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;6)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;LSBF&nbsp;=&nbsp;0,&nbsp;SPI&nbsp;数据传输MSB&nbsp;(位7)在先<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;7);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SPIE&nbsp;=&nbsp;0,&nbsp;SPI&nbsp;中断被禁止<br />}
lyl831015 发表于 2007-11-28 08:38 | 显示全部楼层

主机的从机选择端

主机的SSEL0有接上拉吗?
qinweinai 发表于 2007-11-28 20:34 | 显示全部楼层

easyarmjtag-h问题

我用的是easyarm2131在进行axd调试的时候h-jtag总是只能在板子第一次上电的时候才能检测到lpc2131芯片,以后每进行一次都要对扳子重新上电才能检测到芯片。能告诉我是什么原因吗,如何解决?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

92

帖子

0

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