智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3059|回复: 5
打印 上一主题 下一主题

[编程类] SPI的问题 请大手帮忙

[复制链接]

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
QQ
威望
195
贡献
30
兑换币
2
注册时间
2008-4-12
在线时间
8 小时
跳转到指定楼层
1#
发表于 2010-3-10 19:26:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2贡献
我自己编了俩个型号为DP512飞思卡尔单片机之间的SPI通信,就是另一个为主机,发送一个十六进制数,另一个从机接收。
在主机上要下载的程序如下(头文件省略):
void SPI_INT(void)
{   SPI0CR1 = 0x5e;
  SPI0BR=0X11;  
    }
void SPI_send(unsigned char senddata)
{   
   SPI0DR=senddata;
    while(SPI0SR_SPTEF==0)
  }
void main(void)
{  SPI_INT();
   while(1)
   
{  
    SPI_send(0XF0);
}
}
要在从机上下载的程序如下:
void SPI_INT(void)
{
  SPI0CR1=0x4e;
  SPI0BR=0X11;  
   }
void spi_read(void)

{  while(SPI0SR_SPIF==1)
   {
      data=SPI0DR;
   }
}
void main(void)
{
  SPI_INT();
while(1)
{
     DDRB=0XFF;
     spi_read();
     PORTB=data; /连接八个共阳的LED
    }
}
结果是灯不亮,就是说没什么反应,不知道是我程序的问题,还是别的问题,主机上的SS管脚接了高电平,从接接地。请各位大手指点!

13

主题

326

帖子

0

精华

高级会员

Rank: 4

积分
725
威望
512
贡献
137
兑换币
0
注册时间
2009-9-8
在线时间
38 小时
2#
发表于 2010-3-10 20:29:32 | 只看该作者
DIP512没有用过,不过如果硬件没有问题肯定就是程序问题,不过程序照着数据手册来就可以了
回复

使用道具 举报

3

主题

71

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1083
QQ
威望
336
贡献
667
兑换币
0
注册时间
2010-3-9
在线时间
40 小时
3#
发表于 2010-5-4 09:05:37 | 只看该作者
SPI的收发是同时进行的。不存在像主机程序那样只收不发的情况,那样是的不到数据的。所以在接收时一定要先发送人任意一个数。
回复

使用道具 举报

3

主题

71

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1083
QQ
威望
336
贡献
667
兑换币
0
注册时间
2010-3-9
在线时间
40 小时
4#
发表于 2010-5-4 09:05:40 | 只看该作者
SPI的收发是同时进行的。不存在像主机程序那样只收不发的情况,那样是的不到数据的。所以在接收时一定要先发送人任意一个数。
回复

使用道具 举报

2

主题

203

帖子

0

精华

高级会员

Rank: 4

积分
741
QQ
威望
434
贡献
249
兑换币
0
注册时间
2010-11-1
在线时间
29 小时
5#
发表于 2010-11-25 10:13:08 | 只看该作者
学习
回复

使用道具 举报

4

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
QQ
威望
295
贡献
88
兑换币
10
注册时间
2010-12-3
在线时间
11 小时
6#
发表于 2010-12-3 15:33:46 | 只看该作者
还是没懂…
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-29 18:33 , Processed in 0.375675 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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