OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3332|回复: 2

关于探索者给的I2C实验时序的问题

[复制链接]

45

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2016-12-29
在线时间
47 小时
发表于 2017-1-10 21:33:57 | 显示全部楼层 |阅读模式
I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答 信号。 开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。 结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲, 表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接 收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为 受控单元出现故障。 这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

这是库函数指南上说的。

//产生IIC停止信号
void IIC_Stop(void)
{
SDA_OUT();//sda线输出
IIC_SCL=0;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
  delay_us(4);
IIC_SCL=1;
IIC_SDA=1;//发送I2C总线结束信号
delay_us(4);           
}
这是实验程序的停止信号。对不上的SCL 和SDA。。这是怎么理解的 ???
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

45

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2016-12-29
在线时间
47 小时
 楼主| 发表于 2017-1-10 21:36:01 | 显示全部楼层
void IIC_Stop(void)
{
        SDA_OUT();//sda线输出
        GPIO_SetBits(GPIOA,GPIO_Pin_2);
        GPIO_ResetBits(GPIOA,  GPIO_Pin_3);//STOP:when CLK is high DATA change form low to high
        delay_us(4);
        GPIO_SetBits(GPIOA,GPIO_Pin_3);//发送I2C总线结束信号
        delay_us(4);                                                                  
}
这是我自己写的停止信号
回复 支持 反对

使用道具 举报

45

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2016-12-29
在线时间
47 小时
 楼主| 发表于 2017-1-10 21:37:02 | 显示全部楼层
其实也不算我自己写的,因为我买传感器回来时候,卖家给了个测试程序,是C51的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 18:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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