嗨对话小组
我对通过i2c接口RTC有疑问,我需要使用GPIO端口2引脚4,5。所以问题是我应该在哪里配置GPIO引脚?到目前为止,我使用接近reporter_fh程序添加我的接口,并检查它是否工作!所以在pheriph_setup.c中,我保留并配置我的GPIO引脚。这条路对吗?或者有没有其他标准方法来定义这些GPIO引脚?
2)也如何配置这些引脚作为输入输出引脚,因为在i2c通信期间,引脚应该作为输入和输出工作。
我使用的eeprom接口的例子,以移植到我的RTC。所以我需要你的支持,在这些,等待你的响应。
谢谢
你好,
您可以从路径DA1458x_SDK_3.0.6\peripheral_examples中检查peripheral_examples。
它展示了如何处理I2C通信。
1)确实,你必须在以下地方申报GPIOs密码:
set_pad_functions(空白)
2)对于I2C,应该是:
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA,false);
问候,
DIALOG_TEAM。
你好,我尝试了外设示例接口I2C与我的RTC。现在我使用Abracon RTC 1804,它是7位寻址模式。但是当我调用read或write时,内建函数i2c_wait_until_eeprom_ready()被调用,这个函数被挂起!!我尝试禁用这个功能,但仍然没有响应我的RTC。(用i2c调试器测试RTC,表明RTC工作正常)
在这个例子中,现在我已经在端口0 2和3引脚上连接了rtc !我可以看到数据信号和时钟信号使用范围,试图写到我的RTC,它只是挂起来这样!
日志含义DA子板处于Boost模式。
等待您的回复!!
我完全卡在这个接口部分。硬件连接似乎很好!如果你尽快回复,将会很有帮助!因为我没时间了。!
你好,
目前,我们已经为EEPROM内存创建了特定的I2C api。
所有的api函数都可以在:i2c_eeprom.c文件中找到,你需要更改一些api,例如:
uint8_t i2c_eeprom_read_byte (uint32_t地址)
{
i2c_wait_until_eeprom_ready ();
i2c_send_address(地址);
/ / WAIT_WHILE_I2C_FIFO_IS_FULL ();//必须被删除
SEND_I2C_COMMAND (0 x0100);//设置R/W位为1(读访问)
/ / WAIT_UNTIL_I2C_FIFO_IS_EMPTY ();//必须被删除
WAIT_FOR_RECEIVED_BYTE ();//等待接收的数据
返回(0xFF & GetWord16(I2C_DATA_CMD_REG));//接收字节
}
我们的计划是为每个传感器创建通用的I2C api,但这恐怕还不可用。
很抱歉给您带来了不便。
问候,
DIALOG_TEAM。
嗨Dialog_Team,
我找不到i2c_eeprom.c文件。在SDK中吗?请让我知道我如何能找到它和哪个SDK。
谢谢,
亚历克斯
最好是为I2C通信创建一个通用API !
但是到目前为止,当移植到自定义I2C文件时,我没有从RTC (abracon 1804)得到确认。我通过读取I2C_TX_ABRT_SOURCE_REG寄存器进行检查!
你能详细解释一下为了通过I2C访问RTC要使用哪些寄存器吗?
谢谢
最好是为I2C通信创建一个通用API !
但是到目前为止,当移植到自定义I2C文件时,我没有从RTC (abracon 1804)得到确认。我通过读取I2C_TX_ABRT_SOURCE_REG寄存器进行检查!
你能详细解释一下为了通过I2C访问RTC要使用哪些寄存器吗?
谢谢
最好是为I2C通信创建一个通用API !
但是到目前为止,当移植到自定义I2C文件时,我没有从RTC (abracon 1804)得到确认。我通过读取I2C_TX_ABRT_SOURCE_REG寄存器进行检查!
你能详细解释一下为了通过I2C访问RTC要使用哪些寄存器吗?
谢谢
你好,
请看第112页http://support.dialog-semiconductor.com/system/files/resources/DA14580_D..。了解所有的细节。
问候,
对话框的团队。
你好,
可以从外设模板中找到i2c_eeprom.c。
问候,
对话框的团队。
嗨GL,
我找到了,但由于没有文件,有些参数不清楚。请在i2c_eeprom_init()中给出一些建议:
设备地址,uint16_t dev_address,但是设备地址是7位。我只是把这个数字放入dev_address,如0x00A0,和R/W位设置为0?它是correc
谢谢,
亚历克斯
你好,
可以使用I2C EEPROM驱动程序来控制其他非EEPROM的I2C应用芯片。亚博国际官网平台网址温度传感器(SE95)示例如下所示。
步骤1。打开软件:
DA14580_peripheral_setup.uvproj . SDK
步骤2。看到:periph_setup.h:
将HARDWARE_CONFIGURATION_INDEX(.)改为' 1 '。
/* Test Definition -选择与您的H/W设置匹配的配置
*---------------------------------------------------------
* (0) spi flash memory with uart
* (1) i2c eeprom with uart
带蜂鸣器和uart的正交编码器
*---------------------------------------------------------
*/
//硬件配置<0=> SPI Flash with UART <1=> I2C EEPROM with UART <2=>正交编码器,定时器和蜂鸣器与UART
#define HARDWARE_CONFIGURATION_INDEX (1) // 1 => I2C . I2C . I2C
步骤3。
在eeprom_test.c中添加新软件(在文件的开头)
挥发性int16_t温度;
不稳定的int二世;
//测试外围设备SE95温度传感器
// address = 1001 A2 A1 A0 R/W => 7bitaddress = 0x48…0x48 + 7 = 0x4F
i2c_eeprom_init(0x48, I2C_STANDARD, I2C_7BIT_ADDR, I2C_1BYTE_ADDR);
//读取内部ID-number:
2 = i2c_eeprom_read_byte (0 x05);//测试读取ID-value = 0xA1
/ /读取温度
BTRD = i2c_eeprom_read_data(rd_data, 0,2);
温度= 256 * rd_data[0] + rd_data[1];
温度=温度/ 8;//右移3位
我希望这个例子能让它更容易理解。
虽然有人认为i2c驱动程序只适用于EEPROM,但事实并非如此。
{嗯}