RTC PCF85063A使用I2C_EEPROM API调用通过I2C

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Rajucoolsuraj.
离线
最后一次露面:5个月1周前
加入:2018-12-12 16:09
RTC PCF85063A使用I2C_EEPROM API调用通过I2C

I2C通信代码 -

// pcf85063a_address = 0x51

i2c_eeprom_init(pcf85063a_address,i2c_standard,i2c_7bit_addr,i2c_1byte_addr);//初始化I2C,在I2C地址大小中放置设备的地址大小
send_i2c_command(0x08&0xff);//设备具有的地址大小为两个字节长度,如果您的设备需要一个字节长度,则可以使用此指令从0x03地址或所需的任何地址读取。

等待_while_i2c_fifo_is_full();//等待TX FIFO已满

send_i2c_command(0x0100);//设置 times的读取访问

wait_until_i2c_fifo_is_empty();//等到I2C TX FIFO空
wait_until_no_master_actity();

READ_BYTE = 0xFF&GETWORD16(I2C_DATA_CMD_REG);

我没有获得所需的波形,启动第一命令的传输 -

send_i2c_command(0x08&0xff);

信号SDA - 发送从设备地址,然后不在SDA线上发送从设备的寄存器。

我可以知道可能的错误吗?
此外,I2C接口上有几个帖子到传感器未响应。

我厌倦了使用i2c_eeprom api和链接解决方案 -https://support.dialog-semicondiondiondumondiondum/i2c-driver-lisxdx-sensor.

代码似乎结束了适当的响应。

请求帮助尽快。

谢谢,

raju.

霍尼韦尔

设备:
Rajucoolsuraj.
离线
最后一次露面:5个月1周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

我一直在尝试SDA和SCL线上的信号。

在观察中,在ACK时钟脉冲期间SDA线很高。主人(da14586)调用stop命令。

谢谢。

我可以知道第一篇文章中提到的代码中的错误。

谢谢

raju.

霍尼韦尔

PM_DIALOG.
离线
最后一次露面:9小时10分钟前
职员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

我强烈建议看看SDK6的I2C EEPROM示例。该项目位于SDK目录 \ projects \ target_apps \ peripheral_examples \ i2c \ i2c_eeprom。PIF您的传感器的寄存器使用两个字节来寻址寄存器中的数据,您应该使用2字节寻址(I2C_2BYTES_ADDR)。send_i2c_command(0x08&0xff);将只发送一个字节,但如果我能够正确地形成评论,那些设备具有的地址大小是两个字节的长度。send_i2c_command将所需的数据推入I2C总线,因为您需要以启动I2C通信是内部寄存器的地址,Send_i2c_command((地址>> 8)&0xff)将只是推出8个最重要的位16bit地址,然后是第二个send_i2c_command(地址和0xff);将推动其他8位的地址。

谢谢,PM_DIALOG.

Rajucoolsuraj.
离线
最后一次露面:5个月1周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

我正在使用SDK - 6.0.10的代码

从设备地址(对于我的RTC)是1010001 - 因此主机 - >从属初始条件开始

START - 1010001W - 从设备寄存器(00H - 11H) - ACK

如果写入从属寄存器 - 我在ACK之后传递Data_Byte;

如果从Slave读取 - 重新启动I2C - 1010001R - 接收Data_Byte - Ack

我还尝试了另一个具有相同I2C接口的传感器 - 设备在ACK时钟脉冲上确认。

由于RTC不需要在I2C上读取/写入其寄存器的时钟;我想帮助解释赋予I2C_TAR_REG的地址,以将其传递给I2C总线事务。

0x51(1010001)或0xA2(1010001W) - W =写入位 - 0

谢谢

raju.