OpenEdv-开源电子网

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

I2C例程源码分析

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-5-22
在线时间
0 小时
发表于 2014-6-18 23:17:49 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]u8 IIC_Read_Byte(unsigned char ack) { unsigned char i,receive=0; SDA_IN(); for(i=0;i<8;i++) { IIC_SCL=0; delay_us(2); IIC_SCL=1; receive<<=1; if(READ_SDA)receive++; delay_us(1); } if (!ack) IIC_NAck(); else IIC_Ack(); return receive; }[/mw_shl_code]
请问,例程源码中的    if(!ack) 中ack的值是从哪里得来的呢? 菜鸟没看懂

最佳答案

查看完整内容[请看2#楼]

是函数的参数。。。 外部函数调用IIC_Read_Byte的时候,就会指定ack的值。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-18 23:17:50 | 显示全部楼层
是函数的参数。。。
外部函数调用IIC_Read_Byte的时候,就会指定ack的值。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-5-22
在线时间
0 小时
 楼主| 发表于 2014-6-19 00:07:30 | 显示全部楼层
自己顶一下

回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-5-22
在线时间
0 小时
 楼主| 发表于 2014-6-19 00:37:52 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
好像看明白了,   当temp=IIC_Read_Byte(1)时,此时ack的值为1,主设备发送ACK信号,当当temp=IIC_Read_Byte(0)时,主设备发送NACK信号,表示接收完成。例程里面只需要接收一个字节的数据,所以第一次就发送了NACK信号,如果需要接收多个字节的数据,前面应该就会出现很多次temp=IIC_Read_Byte(1)了。这样理解,是否正确呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-19 00:46:07 | 显示全部楼层
回复【4楼】youngme:
---------------------------------
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-5-22
在线时间
0 小时
 楼主| 发表于 2014-6-19 00:47:03 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
感谢原子老师
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 00:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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