主题中讨论的其他器件:HALCOGEN
大家好、
您在 HALCoGen 中是否有用于 RTC 实时时钟项目的 I2C 和 I2C 配置的示例代码?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
您在 HALCoGen 中是否有用于 RTC 实时时钟项目的 I2C 和 I2C 配置的示例代码?
这是我在2年前发布的 RTC 示例:
您好、QJ Wang、
//从器件地址
#define RV3129_address 0x56
//温度页
#define RV3129_TEMP 0x20
#define DATA_COUNT 1.
/*发送开始条件*/
i2cSetStart (i2cREG1);
/*配置要与*/通话的从机地址
i2cSetSlaveAdd (i2cREG1、RV3129_address);
/*将模式设置为主设备*/
i2cSetMode (i2cREG1、I2C_MASTER);
/*将方向设置为发送器*/
/*注意:可选-在 Init 中完成*/
i2cSetDirection (i2cREG1、I2C_transmitter);
/*发送字地址*/
i2cSendByte (i2cREG1、Slave_Word_address);
/*设置编程计数后停止*/
i2cSetStop (i2cREG1);
/*轮询模式下的 Transmit data_count 数据数量*/
i2cReceive (i2cREG1、DATA_COUNT、RX_Data_Master);
/*等待总线忙被清除*/
while (i2cIsBusy (i2cREG1)=true);
/*等待直到检测到停止*/
while (i2cIsStopDetected (i2cREG1)=0);
/*清除停止条件*/
i2cClearSCD (i2cREG1);
/*在开始下一个块之前使用 Simple Dealya */
/*取决于从属设备准备就绪的速度*/
for (delay=0;delay<100000;delay++);

我已经根据 Hercules I2C 示例尝试过此代码、但我确实获得了此 RTC 的任何输出
请帮助我准备该序列。



您能确认 I2C 和 Code 的配置吗?
您好、QJ Wang、
不、我直到现在才从 RTC 接收数据。

我已经看到 Arduino 板的代码。
uint8_t RV3129::readRegister (uint8_t addr)
{
_i2cPort->BeginTransmission (RV3129_ADDR);
_i2cPort->write (addr);
_i2cPort->endTransmission ();
_i2cPort->requestFrom (RV3129_ADDR、(uint8_t) 1);
if (_i2cPort->available ()){
返回(_i2cPort->read());
}
否则{
返回(0xFF);//错误
}
}
bool RV3129::writeRegister (uint8_t addr、uint8_t val)
{
_i2cPort->BeginTransmission (RV3129_ADDR);
_i2cPort->write (addr);
_i2cPort->write (val);
如果(_i2cPort->endTransmission ()!= 0)
返回(false);//错误:传感器未返回
return (true);
}
如何在 TI API 和中将此代码用作 API 请求
BeginTransmission API As
/*清除停止位*/
i2cREG1->MDR &=~(I2C_STOP_COND);
/*清除起始位*/
i2cREG1->MDR &=~(I2C_START_COND);
/*清除重复模式位*/
//配置要与之通信的从机地址
i2cSetSlaveAdd (i2cREG1、RV3129_WADDR); 为0xAC
如何根据数据大小给出计数值?
/*配置数据计数*/
i2cSetCount (i2cREG1、Count+1);
请尽快确认。
好的、您没有从 RTC 获得任何输出。
您是否在该帖子中尝试过我的代码? 我为 RTC 编写了以下 I2C 代码: