stc12c5a60s2板子的使用学习经历分享

 

在第一段时间,主要看了7513和2810芯片它们的datasheet,很多寄存器,看的我头大。

第二段时间,开始学习stc12c5a60s2的使用。我有个试验箱,里面也有stc芯片,不过它是90的,而且有很多例程。我就对着历程学习。我对语言算法的了解还是不错的,所以大部分例程还是能很快看懂。知道了端口,寄存器的使用,SMON,PCON等各种用于串口初始化工作相关设置。写了串口通信的上位机程序(用的是C#语言),写了下位机,通过对上位机命令的读取,解析和执行。

第三阶段,也就是现在我在做的。要通过I2C协议,实现对7513和2810芯片的控制。在前段时间,我也看过I2C协议。这个协议已经有很多代码了,拿过来用就好。花费时间较多的地方是,I2C协议有器件地址和从地址,我对从地址这概念就一直很困惑,现在的理解就是从器件内部的地址。器件地址相当于班号,从器件地址相当于学号。

但是现在还没有实现,对7513芯片内部一个寄存器的写和读(我用的从地址是0x45),读出来的总是0,而且写进去后,再读还是0。用的是别人写的有子地址器件读写多字节函数,返回值都是1,表示函数执行完全正确,但是不知道为什么,结果是这样。

我猜测可能的原因如下:

(1),我的读写方式错误。

(2),选的寄存器太特殊了。

(3),写之前要进行相关配置。

关于猜测一:

为此,我在网上搜了下别人关于该芯片I2C的算法,在pudn里面找到了一个人写的例程。里面读写调用的函数和使用方式和我的程序是一样的,说明我的第一条猜测是错误的。

PS:但是,我又发现了一个新的问题,它里面的I2C协议,它的scl和sda用的引脚是P2口的1管脚和0管脚。但是之前,我查文档就发现应该用的是P3口的4管脚和5管脚。我怀疑是自己错了,还是他错了。我把我的程序换成P2口,发现无应答,只有P3口才有应答,虽然返回值是0。我觉得应该是他错了。

关于猜测二:

我又试了其他寄存器,结果还是一样的,而且查阅了相关资料证明,这个寄存器是可以读写的。

关于猜测三:

当排除了以上两种猜测之后,只能在第三条道路上前进。

永不止步步 发表于02-24 09:33 浏览65215次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:305017个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号