gunslinger 发表于 2014-8-24 10:46:23

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标志,大家有遇到同样的问题吗?

gunslinger 发表于 2014-8-24 10:51:46

自己顶下,期待中。。。。。

wangpengcheng 发表于 2014-8-24 10:54:02

SPI最好不要单步去调等待那块,原因我也不知道为什么,我也遇到过,单步过不去,只要不单步到等待那个标志位,就没有问题!

wxfje 发表于 2014-8-24 11:35:11

SPI在等待那里不能用单步调试,至于为什么不能单步调试,这个我现在还没想明白
还有,吧中断关掉试试,我之前就遇到串口中断发数据时会对SPI有影响,所以只能关闭中断再进行SPI发数据,楼主可以试试

浪里白条 发表于 2014-8-24 15:40:47

不懂,帮顶了

gunslinger 发表于 2014-8-24 21:36:37

谢谢楼上的热心,我试试看!!

zhangchaoying 发表于 2014-8-24 21:46:43

看了一下,没看懂,帮顶。

laotui 发表于 2014-8-25 12:41:36

不懂帮顶。

gunslinger 发表于 2014-8-27 17:39:57

再顶一下,唉,现在没人用16位机了?

jiang887786 发表于 2014-9-1 10:47:03

我在用,楼主!我感觉还是软件模拟吧。要么你就用PE,。不然把datasheet看看仔细。我就是模拟的。楼主搜个模拟的用用吧。或者我的给你看看

gunslinger 发表于 2014-9-2 22:32:40

jiang887786 发表于 2014-9-1 10:47
我在用,楼主!我感觉还是软件模拟吧。要么你就用PE,。不然把datasheet看看仔细。我就是模拟的。楼主搜个 ...

谢谢,楼上的热心!!

jiang887786 发表于 2014-9-2 22:38:27

gunslinger 发表于 2014-9-2 22:32
谢谢,楼上的热心!!

问题搞定没有?

FSL_TICS_ZJJ 发表于 2014-9-11 14:40:35

楼主关于16位的问题,可以到官网建一个技术服务请求,那边会有相关的工程师帮你解答。 提交服务请求链接:http://www.amobbs.com/thread-5570020-1-1.html内容请采用英文

FSL_TICS_ZJJ 发表于 2014-9-11 14:41:03

楼主关于16位的问题,可以到官网建一个技术服务请求,那边会有相关的工程师帮你解答。 提交服务请求链接:http://www.amobbs.com/thread-5570020-1-1.html内容请采用英文
页: [1]
查看完整版本: MC9S12XE的SPI出现问题,SPI1SR_SPTEF始终是1呢(已解决)?