#申请原创# @21小跑堂
今天又继续捡起来之前测试失败的程序。在重新开始测试之前,又仔细读了一遍文档。在对控制寄存器 IICCON中AA的说明中,有如下描述:
应答标志位
0:回复 NACK(SDA 上为高电平)
1:回复 ACK(SDA 上为低电平)
在之前的测试中,以为这一位,是主机根据从机的应答信号,来自动设置这个位的。加上资料中关于IIC工作模式的流程图中一直都是以X来描述的。就以为不用管呢。今天在测试处理中,在准备以IIC发送指令、数据之前,根据从机的应答要求,提前设置了这个位。如果从机在收到数据、指令后的应答位ACK(即使SDA=0),则提前设置AA=1,然后再发送数据、指令。这样测试的结果,终于正常了,和主机发送模式的流程图终于匹配上了。说明芯片是没有问题的,是自己理解不到位,才导致测试结果不正常。
这次测试,再一次说明了,对文档不仔细阅读,一知半解干活,是很容易出问题的。很庆幸自己一直坚持下来,没有放弃。
|