MC9S12XE的SPI出现问题,SPI1SR_SPTEF始终是1呢(已解决)?
本帖最后由 FSL_TICS_ZJJ 于 2014-9-11 14:41 编辑见谅啊!!这块多数在讨论32位机,我这有个16位单片机的问题请大家帮忙看看!
最近用这款单片机开发个小程序,发现 SPI1SR_SPTEF始终是1,不能清零,我是查询发送、接收,下面贴个代码大家帮忙看看!!
void SPI1_Init(void)
{
//uint8_t temp;
SPI1CR1=0x04;
(void)SPI1SR;
(void)SPI1DR;
/*SPPR2~SPPR0=011=3,SPR2~SPR0=010=2 ,最终波特率为 Fbus /(3+1)*(2^(2+1)),假设总线频率为32M。那么算下来SCLK=1M */
SPI1BR=0x32;
SPI1CR2=0x40;/*D7=0 D6=XFRW=1数据传输16位,=0是8位 D5=0 D4=MODFEN=0*/
/*SPIE=0 禁止中断,SPE=1 使能SPI模块,SPTIE=0 发送中断禁止,MSTR=1主机工作模式,CPOL=1 SCLK空闲为高电平,CPHA=1 时钟第二个沿采集数据,SSOE=0 片选脚不用,LSBFE=0 MSB先传*/
SPI1CR1=0x5e;
}
uint8_t SPI1_Send_Data(uint16_t Send_Data)
{
uint16_t i;
while(!(SPI1SR_SPTEF));/*等待发送队列空,开始写入新的数据*/
SPI1DR= Send_Data;
//******
//
return 0;
}
我用调试器看了,在粗体字的部分,是不能像手册说的那样清除SPI1SR_SPTEF标志,大家有遇到同样的问题吗? 自己顶下,期待中。。。。。 SPI最好不要单步去调等待那块,原因我也不知道为什么,我也遇到过,单步过不去,只要不单步到等待那个标志位,就没有问题! SPI在等待那里不能用单步调试,至于为什么不能单步调试,这个我现在还没想明白
还有,吧中断关掉试试,我之前就遇到串口中断发数据时会对SPI有影响,所以只能关闭中断再进行SPI发数据,楼主可以试试 不懂,帮顶了 谢谢楼上的热心,我试试看!! 看了一下,没看懂,帮顶。 不懂帮顶。 再顶一下,唉,现在没人用16位机了? 我在用,楼主!我感觉还是软件模拟吧。要么你就用PE,。不然把datasheet看看仔细。我就是模拟的。楼主搜个模拟的用用吧。或者我的给你看看 jiang887786 发表于 2014-9-1 10:47
我在用,楼主!我感觉还是软件模拟吧。要么你就用PE,。不然把datasheet看看仔细。我就是模拟的。楼主搜个 ...
谢谢,楼上的热心!! gunslinger 发表于 2014-9-2 22:32
谢谢,楼上的热心!!
问题搞定没有? 楼主关于16位的问题,可以到官网建一个技术服务请求,那边会有相关的工程师帮你解答。 提交服务请求链接:http://www.amobbs.com/thread-5570020-1-1.html内容请采用英文 楼主关于16位的问题,可以到官网建一个技术服务请求,那边会有相关的工程师帮你解答。 提交服务请求链接:http://www.amobbs.com/thread-5570020-1-1.html内容请采用英文
页:
[1]