3个帖子/ 0新
最后一篇
Vadym.
离线
最后一次露面:2个月前1年
加入:2015-08-13 08:28
I2C主人中断

嗨对话框。

我使用DA14580使用SDK 5.0.3
我需要通过与加速度计设备LIS2DH12(与LIS3DH非常相似)进行通信。
我看到来自SDK for EEPROM的I2C驱动程序使用具有全局中断的POLOINE部分。

您是否具有I2C主驱动程序示例,具有内容工作方法?

非常感谢!

设备:
Vadym.
离线
最后一次露面:2个月前1年
加入:2015-08-13 08:28
我还有一个问题:

我还有一个问题:
为什么当我们从I2C读取数据时需要禁用中断?
我的意思是函数:来自i2c_eeprom.c驱动程序的read_data_single():

静态void read_data_single(uint8_t ** p,uint32_t地址,uint32_t大小)
{
in j;

i2c_send_address(地址);

for(j = 0; j {
等待_while_i2c_fifo_is_full();//等待TX FIFO已满
send_i2c_command(0x0100);//设置次次读取访问
}

//关键部分
global_int_disable();

//获取收到的数据
for(j = 0; j {
wait_for_received_byte();//等待收到的数据
** p =(0xff&getword16(i2c_data_cmd_reg));//获取收到的字节
(* p)++;
}
//关键部分结束
global_int_restore();
}

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Vadym,

嗨Vadym,

不,目前在I2C上没有官方版本,与中断合作。

在下面的帖子上,我对I2C驱动程序进行了一些修改,以便使用中断,以便在没有启动和停止信号的情况下传输超过32个字节,也许您会发现它有用。

https://support.dialog-semicondiondiondum/i2c-data-transfer-size.

关于第二个帖子,有关此版本的驱动程序存在一些不一致,请在新SDK中查看新版本的Read_Data_single()。在新版本的SDK中,关键部分已移动到函数的上部 - 将时钟应用于I2C从站的部分应该是中断,而不是在从FIFO读取字节时的中断。禁用中断的原因是为了防止在中断情况下防止地址和数据之间的I2C终止。

谢谢mt_dialog.