楼主: L.fish

[0o原创]CC2430模拟IIC的数据读取

[复制链接]
snowtotus 发表于 2011-1-17 23:39:40 | 显示全部楼层
小鱼,好谢谢你,我正在头疼我写的这个软件读取sht11这个温湿度传感器呢,一直读不出数据来,哎,现在好了,有你的提示,我信心又来了!
kennan 发表于 2011-3-10 08:44:48 | 显示全部楼层
本帖最后由 kennan 于 2011-3-10 08:52 编辑

其实也可以换一种思路来实现IIC。
举例:
以下是IIC控制端口的寄存器初始化
IIC_PORT_SEL &= ~(IIC_SCL + IIC_SDA); //用来模拟IIC总线端口的这两根线选择GPIO功能;
IIC_PORT_DIR &= ~(IIC_SCL + IIC_SDA); //这两根线先弄成输入形式;
IIC_PORT &= ~(IIC_SCL + IIC_SDA);      ;//这两根线所对应的寄存器位置0
IIC_PORT_INP |= (IIC_SDA + IIC_SCL); ;//这两个端口输入的时候采用三态方式

以下是IIC总线那两根线输出高电平和低电平的实现
#define SCL_LOW()  IIC_PORT_DIR |= IIC_SCL       //SCL置低电平
#define SCL_HIGH() IIC_PORT_DIR &= ~IIC_SCL   //SCL置高电平
#define SDA_LOW()  IIC_PORT_DIR |= IIC_SDA     //SDA置低电平
#define SDA_HIGH() IIC_PORT_DIR &= ~IIC_SDA  //SDA置高电平

具体原理:因为IIC总线需要在SCL和SDA线接上拉电阻的,(以SCL线为例)所以当SCL设置成输入方式时,这根线因为上拉电阻的原因,就是高电平,当SCL设置成输出方式的时候,因为事先已经初始化了端口寄存器是低电平,所以该端口输出0,也就是说,通过更改PORT_DIR的方式就可以实现IIC总线读写了。这个过程,当你要读SDA线的时候,这个端口按照iic 的规范就应该是高电平的,而此时端口方向也正是输入方式,直接读就可以了。
li469173166 发表于 2011-3-29 23:19:35 | 显示全部楼层
谢谢楼主分享,请问“robin's evolution的那篇用cc2430读取AT24CXX的驱动程序文章”链接是多少?
soswelcome 发表于 2011-4-8 20:55:15 | 显示全部楼层
感谢楼主。好东西,继续关注
lilo 发表于 2011-11-8 14:56:40 | 显示全部楼层
非常感谢楼主分享哦
scubit 发表于 2011-11-19 10:51:50 | 显示全部楼层
多谢楼主分享。想再请教下:CC2430接MMA7455时,MMA7455两个中断引脚和CC2430是怎么样接线呢?
黄小曹 发表于 2011-12-27 22:25:44 | 显示全部楼层
你是用cc2430模块采集加速度然后用无线发送出去吗。。。我最近就是做这个,版主能给我指导下发个程序和资料吗,非常感谢啊。。920754767@qq.com
黄小曹 发表于 2011-12-27 22:27:03 | 显示全部楼层
你是用cc2430模块采集加速度然后用无线发送出去吗。。。我最近就是做这个,版主能给我指导下发个程序和资料吗,非常感谢啊。。920754767@qq.com
duanjingbo1 发表于 2012-1-4 10:00:09 | 显示全部楼层
谢谢分享!
li94575 发表于 2012-5-8 20:59:55 | 显示全部楼层
有谁使用过这个程序吗?程序有问题啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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