全部博文(41)
2011年(41)
分类: 嵌入式
2011-05-26 20:25:33
经过一周左右的时间终于是把IIC弄的个差不多了,我只能说对于每一个程序都要认真对待,每个程序的编写都是一种进步。对于IIC,给我的感觉是这 个东西单片机的时候也知道,但是没有调出来,现在RAM裸机编程正好好好的学习的一下,但是虽然对于2440的IIC驱动只需要配置好寄存器和把握好时序 就可以了,但是我还是经过了很多的一段痛苦的时期,不过现在回想看看,都是一种成长的经历,让人值得骄傲。因为我坚持过来了。好的,说正点的,首先IIC 编程依然感谢乐于奉献的赵老师,他的博客地址
http://blog.csdn.net/zhaocj/archive/2010/04/12/5477152.aspx
很多详细的介绍我就不多说了,赵老师的博客讲得很详细,和以前一样讲一下自己的体会和问题。
1. AT24C08芯片,是一款EEPROM,8K,不过是8Kbit,1024X8bits。遵循IIC协议通信。首先对于一个控制器可以接多个IIC设 备,为了区分每个IIC设备,给每个IIC设备一个地址。这个的地址的确定用硬件的连接方式确定。24c08的地址,1010(A2)(B9)(B8) (R/W) 1010代表EEPROM设备,A2引脚的硬件连接(接地或者接VCC)确定0或者1,最多可以接俩片24C08。B9和B8是内存地址的最高位,R/W 位读写控制位。
2. IIC的应答
1. 应答信号的发送,应答信号是在8位数据(读或者写)传输完成后,由主设备发送第九个时钟脉冲同时主设备释放SDA线(拉高SDA)
2. 应答信号的响应, 从设备在接收到第九个时钟信号后,拉低SDA线,响应应答信号
3. 主设备的应答接收, 主设备在检测到从设备拉低SDA后,将时钟线SCL拉低,时钟线SCL为低是不能进行数据的传送,所以只有再 Clear pending bit to resume 后才能从新进行数据的接收。
3. IIC的读写中,等待中断的死循环中要加delay延时函数,读写函数的最后需要释放iic总线以便下一次读写,建议IICCON = 0xe0 ,先要把数据写到IICDS上再发送开始信号
4. 在读IIC的时候,发送了接收模式的时候,从设备会发送一个0xa1的数据,应该是设备地址加上读信号。同时有可能设备内部的内存地址计数器加1,(猜测)因为我用current address read 读数据的时候总是向后移动了一个字节。
5. 24C08有Byte Write和Page Write,当写Page Write的时候要注意,24c08是以16个字节为一页,同时一页的起始地址是16位对齐的,即最后俩位地址只能是00.而且在一页中写不能写到接下来 的那一页去,但是Sequential Read就没有这种限制,可以一直读。
6. 一个串口显示的问题,就是接收到的数据不能显示字符的时候可能会影响下一个字符的显示,我因为用串口调试的时候总是收不到数据,或者乱码,后面用十六进制显示就好了。
7. 写程序要有耐心和毅力,能够冷静坚持,不能遇到问题就浮躁,使情绪。
今天就先写到这里,2011-05-26 20:25:34