打印

项目,用到c8051f023硬件SPI,问题棘手,望前辈们指点一二

[复制链接]
2115|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
er357951|  楼主 | 2013-4-12 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主要就是开硬件SPI来驱动24L01。
这个是经历了软仿SPI稳定两片24L01确定能正常运行两两通信了之后,才开启硬件SPI来提高速度的。
这个MCU小弟也是用了2,3年了,交叉开关配置和外设初始化在配合02X手册的情况下
进行配置应该是没什么问题的。

可是现在问题来了。
配置好硬件SPI后其实速度没提高多少,倒是折腾出了一个奇怪的现象:
24L01收端的SPI0DAT(硬件SPI的收发寄存器)无论如何设置,读出的数据都是0XFF,直接导致24L01里面
读寄存器的值全是0XFF,包括24L01的收发状态寄存器也是。
所以24L01就“自收发”了、、、、

下面给出SPI0的初始化配置和读写函数:
SPI0_INIT()
{ SPI0CN=0X03;
  SPI0CFG=0X07;
  SPI0CLK=0X03;(好像是这个,值没记错,名字可能写错,配置时钟速率的,公司不能上网,保密单位。。你懂                     得。。)
EIE1 &= ~0X01;
}

uchar  SPI_WR(uchar data)
{
uchar temp;

SPI0DAT=data;
while(!SPIF);
SPIF=0;
temp= SPI0DAT;

return temp;
}

以上,折腾2天了,网上例程翻了不少,新华龙原版例程都翻烂了,哑元的问题也注意到了(读时写0或FF)
示波器波形也看了(这个有些怪,SCK波形不是很好,低电平保持得有些乱,但是吻合),现在不知道该怎么面对这个工程。。。。。有些凌乱,看到这里的朋友还多多包涵,,,,

不知道有没有前辈遇到过,希望能指点一二,小弟真的感激不尽啊~~

相关帖子

沙发
er357951|  楼主 | 2013-4-14 23:40 | 只看该作者
问题解决了。
这里真是让我小伤心,发了两次求助贴了,一直是被观望没人回,哎。。。。。

使用特权

评论回复
板凳
ayb_ice| | 2013-4-15 07:52 | 只看该作者
官方例程一大把,自己不看怪谁

使用特权

评论回复
地板
dirtwillfly| | 2013-4-15 08:08 | 只看该作者
er357951 发表于 2013-4-14 23:40
问题解决了。
这里真是让我小伤心,发了两次求助贴了,一直是被观望没人回,哎。。。。。 ...

解决了就好。建议楼主多多看看官方的例程和手册。另外网上的资料也有很多,要多多利用

使用特权

评论回复
5
er357951|  楼主 | 2013-4-18 01:15 | 只看该作者
dirtwillfly 发表于 2013-4-15 08:08
解决了就好。建议楼主多多看看官方的例程和手册。另外网上的资料也有很多,要多多利用 ...

好委屈。。。。卤煮已经在主楼发帖的时候标明收集了很多例程参考了,怎么会少了新华龙原版官方例程。公司不能接外网,拷到电脑用金山词霸一条条注释看着看完官方例程的。现在叫我背我都能背出来。

使用特权

评论回复
6
dirtwillfly| | 2013-4-18 08:00 | 只看该作者
er357951 发表于 2013-4-18 01:15
好委屈。。。。卤煮已经在主楼发帖的时候标明收集了很多例程参考了,怎么会少了新华龙原版官方例程。公司 ...

大家都很忙的,版主都是兼职的,也就在业余抽点时间来论坛看看。所以还请多多理解啊。
若是楼主有心,可以把解决的问题的过程分享下,相信会对更多的人有帮助。

使用特权

评论回复
7
yhn1973| | 2013-4-18 10:09 | 只看该作者
24L01应该是IIC接口吧

使用特权

评论回复
8
er357951|  楼主 | 2013-4-21 08:15 | 只看该作者
dirtwillfly 发表于 2013-4-18 08:00
大家都很忙的,版主都是兼职的,也就在业余抽点时间来论坛看看。所以还请多多理解啊。
若是楼 ...

问题很简单,简单到我都不好意思写出来,不过依然是一种问题模式,而且估计很多人都犯,写出来分享也是种经验。
24L01分收发端,发端我按手册和例程写的后来证明没有问题,出问题的是收端,当时心急,而且020用很熟悉,把硬件SPI拷贝发端的整理好后,就直接调试了。

忘了配置交叉开关到指定端口。。。。。

所以0xff是硬件SPI在命令得不到响应的情况下返回的数值,后来配置了交叉开关,直接一遍好使通过。

总结就是越熟悉的东西越容易大意,所以心态要修炼。

以上。

使用特权

评论回复
9
NE5532| | 2013-4-21 08:34 | 只看该作者
er357951 发表于 2013-4-21 08:15
问题很简单,简单到我都不好意思写出来,不过依然是一种问题模式,而且估计很多人都犯,写出来分享也是种 ...

楼主你确实应该不好意思,找个示波器看下MISO和MOSI上的数据就知道是不是全0xFF在跑了,你说比你发帖傻等快了多少倍呢?出了问题要想办法找,推荐《程序调试黑宝书》,祝你早日成为Debug高手。

使用特权

评论回复
10
dirtwillfly| | 2013-4-21 08:48 | 只看该作者
er357951 发表于 2013-4-21 08:15
问题很简单,简单到我都不好意思写出来,不过依然是一种问题模式,而且估计很多人都犯,写出来分享也是种 ...

谢谢楼主分享。每一个细节很重要

使用特权

评论回复
11
er357951|  楼主 | 2013-4-21 22:23 | 只看该作者
NE5532 发表于 2013-4-21 08:34
楼主你确实应该不好意思,找个示波器看下MISO和MOSI上的数据就知道是不是全0xFF在跑了,你说比你发帖傻等 ...

确实是我粗心,不过情况没有你想的那么简单。
要不我还有时间跑来发帖空等干嘛,公司不能上网不是实在找不到我才懒得出来发帖求助呢。

我会告诉你用示波器测了全部有波形么?我不告诉你是交叉开关配错你会想到0XFF是这样导致的么?

使用特权

评论回复
12
er357951|  楼主 | 2013-4-21 22:25 | 只看该作者
NE5532 发表于 2013-4-21 08:34
楼主你确实应该不好意思,找个示波器看下MISO和MOSI上的数据就知道是不是全0xFF在跑了,你说比你发帖傻等 ...

再吐槽补充一句,那本书在连载的时候我就一章不落的看着直到完结,是好书。

使用特权

评论回复
13
Dick Hou| | 2013-4-22 17:20 | 只看该作者
NE5532 发表于 2013-4-21 08:34
楼主你确实应该不好意思,找个示波器看下MISO和MOSI上的数据就知道是不是全0xFF在跑了,你说比你发帖傻等 ...

收有问题,并不是数据线上的数据有问题,楼主这个问题示波器是看不出来的。

使用特权

评论回复
14
er357951|  楼主 | 2013-4-23 01:16 | 只看该作者
Dick Hou 发表于 2013-4-22 17:20
收有问题,并不是数据线上的数据有问题,楼主这个问题示波器是看不出来的。 ...

这。。。。此话怎讲?
示波器测的MOSI和MISO都有波形,不就是代表SPI的写入读出正常么?
难道MISO的波型24L01还会自动产生???

使用特权

评论回复
15
NE5532| | 2013-4-23 08:31 | 只看该作者
er357951 发表于 2013-4-21 22:23
确实是我粗心,不过情况没有你想的那么简单。
要不我还有时间跑来发帖空等干嘛,公司不能上网不是实在找 ...

楼主还不信,一看MISO上有数据,就直接找单片机自己的问题了呗,寄存器看一遍我还不信看不到这个控制位。很多时候Debug的时候“发呆”,是因为不知道问题在哪里。一旦楼主区分开是主机还是从机侧的问题,两下子就找到问题了。:)

使用特权

评论回复
16
Dick Hou| | 2013-4-23 09:15 | 只看该作者
er357951 发表于 2013-4-23 01:16
这。。。。此话怎讲?
示波器测的MOSI和MISO都有波形,不就是代表SPI的写入读出正常么?
难道MISO的波型2 ...

简单点,例如UART,就TX、RX两条线,MCU从TX发出数据,设备收到了,返回数据,那RX引脚上自然有波形,理论上MCU也能收到。
但如果软件没有置位REN接收允许位,自然收不到数了。
这样的问题,示波器仍然能看到TX、RX上的波形是正确的。

使用特权

评论回复
17
jj222| | 2013-12-2 20:34 | 只看该作者
楼主,我现在正在调020的硬件spi,都调了两周了,也没什么大进展,您还有这个程序吗?请前辈指点一下,我的qq是1050246839

使用特权

评论回复
18
jj222| | 2013-12-2 20:41 | 只看该作者
恳请楼主指点啊。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

57

帖子

1

粉丝