查看: 3838|回复: 3

[其他] SPI通讯一直停while(!(SPI0SR_SPIF));等待上

[复制链接]

该用户从未签到

8

主题

35

帖子

0

新手上路

Rank: 1

积分
92
最后登录
1970-1-1
发表于 2013-7-22 10:01:46 | 显示全部楼层 |阅读模式
在进行SPI通讯时,插上仿真器仿真时,程序是可以运行的,把仿真器取下后,下电重新上电,程序就一直停在while(!(SPI0SR_SPIF));等待中……
SPI的读写如下:
void SPI_Write_Byte(byte val)
{
 SPI0DR = val;
 while((SPI0SR&0x20)==0);
 return;
}
byte SPI_Read_Byte(void)
{  
  byte Value;
  byte clear;
   while((SPI0SR&0x80)!=0x80);     //while(!(SPI0SR_SPIF));
  clear= SPI0SR;
  Value= SPI0DR;
 return Value;
}
void RD33972(byte data1, byte data2,byte data3)
{
    SPI_Write_Byte(data1);              
    SP_status.Byte = SPI_Read_Byte();      
    SPI_Write_Byte(data2);
    SGh_status.Byte = SPI_Read_Byte();      
    SPI_Write_Byte(data3);
    SGl_status.Byte = SPI_Read_Byte();    }
我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

9

主题

29

帖子

0

注册会员

Rank: 2

积分
73
最后登录
1970-1-1
发表于 2013-7-22 16:17:45 | 显示全部楼层

RE:SPI通讯一直停while(!(SPI0SR_SPIF));等待上

有没有可能是电源的问题
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-7-23 09:12:49 | 显示全部楼层

    RE:SPI通讯一直停while(!(SPI0SR_SPIF));等待上

    可能是通讯的问题。SPI总线上是否是数据在发送?建议用中断的方式,这种查询说明他读取不到总线的数据。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    13

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    1970-1-1
    发表于 2014-8-7 19:47:26 | 显示全部楼层

    回复:SPI通讯一直停while(!(SPI0SR_SPIF));等待上

    改为  while(!(SPI0SR_SPTEF));看看
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 06:39 , Processed in 0.091094 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表