4个帖子/ 0新
最后一篇
jamesleo-konka
离线
最后一次露面:4年3个月前
加入:2017-01-22 02:42
I2C重启信号

嗨,对话框,
我有一个衣服,是这个时代:
开始
发送device_addr(w)
发送Reg_Addr.
重新开始
发送device_addr(r)
读取数据
....
停止

看看demo_i2c.c.是没搞清楚如何实现这个时尚。
一般的我的i2c时代是这样的:
开始
发送device_addr(w / r)
发送Reg_Addr.
写/读取数据
....
停止

该如何利用i2c的次数来实现?hw_i2c_set_restart_enabled(HW_I2C_ID ID,BOOL启用)如何使用?
在芯片硬件设计中,重启是怎样熟发的?

户外,一个i2c作品手程是如何迁移的?(产后启动信号开梦)。Demo_i2c.cirie,fm75的狗子,貌似只有一张set_target_address,这个函数可驾驶I2c吗?即使可以,这次i2c完成之词,下次的操作用也应该应该启启才才对。

谢谢

关键词:
设备:
qinjiny_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2016-11-01 05:47
你好,

你好,

hw_i2c_set_restart_enabled这个函数是把i2c_con_reg里的i2c_restart_en位设为1,目的正为i2c主机的时代允许发布重启信号,并且这个位默认就是1,也就的。

重新启动信号一般不能驾驶设置,底层协议根据奴隶反馈acr的情况自行判断是发作重启继续进行i2c数码传输的人数止损结束。

建议看一下681数据表的114页开头,对芯片的i2c功能和时代有很详细明。除了demo_i2c.c。也可以看看demo_i2c_async.c和适配器里程的ad_i2c.c

jamesleo-konka
离线
最后一次露面:4年3个月前
加入:2017-01-22 02:42
qinjiny_dialog,您好

qinjiny_dialog,您好
我看演示里的周边 - 德米工程,隐含了若多细节,包括跳动开始,停止信号等等
一道步骤:
1.设置目标地址
2.资源要求(I2C)

然后就是读写i2c,比如
静态void fm75_read_reg(uint8_t reg,uint8_t * val,uint8_t len)
{
size_t rd_status = 0;
hw_i2c_abort_source abrt_src = hw_i2c_abort_none;

/ *
*在传感器寄存器中读取值之前,我们需要向其发送一个字节信息
*通知现在将阅读哪个传感器寄存器。
* /
HW_I2C_WRITE_BYTE(HW_I2C1,REG);
RD_STATUS = HW_I2C_READ_BUFFER_SYNC(HW_I2C1,VAL,LEN,ABRT_SRC,HW_I2C_F_NONE);
if((rd_status <(size_t)len)||(abrt_src!= hw_i2c_abort_none)){
printf(“FM75读取失败:%U”换行符,ABRT_SRC);
}
}

那我理性的:hw_i2c_write_byte(hw_i2c1,reg);这个这个会动源启动,并发表从地址(写),然后发离阁
接接来,hw_i2c_read_buffer_sync这这数,读,改变了i2c的方向,当时自动发产一卷重新启动,并自动发表从地址(读),然后然后数码......读取读取成之道,i2c控制器自动发产止损。

几个关键词的开始,重启,停止都是自动完成的?包括从地址都是自动发表的? - 没有看到发给从属地址的地址的分数语语。
那我是的时代,也可用上面这代码代码实现?万能啊

开始--- |
发送device_addr(w) - |---- HW_I2C_WRITE_BYTE(HW_I2C1,REG);
发送reg_addr - |
重启---自动生成 - |
发送device_addr(r) - | --- hw_i2c_read_buffer_sync
读取数据 - |
....
停止 - |

是这样这样?如果这样,真是万能了

qinjiny_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2016-11-01 05:47
进生方式改变的话i2c模块会发表重启命令

进生方式改变的话i2c模块会发表重启命令的,不错的是用适得的函码不可能不可能使用