DA14531 I2C文档吗?

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
6个职位/ 0个新职位
最后发表
magergar
离线
最后看到:1个月1个星期前
加入:2020-05-26 18:20
DA14531 I2C文档吗?

我在寻找关于使用这个外设的文档,但找不到任何东西除了sdk示例

这个例子是关于读写eeprom的,但我不能使用这个,因为我想读取温度传感器(TC74)

我的问题是,当我看I2C.c和I2C.h时,我不能理解它实际上是如何工作的

我如何开始与奴隶沟通?

我知道在函数peri_init (void)中有另一个函数i2c_init(&i2c_cfg);

但这就意味着在那之后我就可以写作和阅读了吗?

如果调用i2c_release()怎么办?

这是否意味着我需要再次调用i2c_init(&i2c_cfg) ?

以及关于ACK和NACK如何我可以发送它或读取它们,与START和STOP位相同

我假设这是在某个函数中完成的我不知道如何和在哪里完成

希望你能帮我理解这一点

PM_Dialog
离线
最后看到:2天5小时前
工作人员
加入:2018-02-08 11:03
嗨magergar,

嗨magergar,

我建议先查一下我们的da14551 - da14585 -586读数I2C加速度计BLE西南的例子。它展示了如何从I2C加速度计获取数据,并使用DA14531或DA14585/586设备发送BLE通知测量。采用ADXL345作为外设I2C。在user_ADXL345.c文件中,你会发现如何使用SDK I2C驱动程序(6.0.14.1114\ SDK \平台\驱动程序\ I2C)来配置和读取I2C设备。

为了初始化I2C块,应该在外围init()中调用i2c_init()。用于初始化的所有I2C信息都保存在i2c_cfg配置结构中。

如果您有任何后续问题,请让我知道。

谢谢,PM_Dialog

magergar
离线
最后看到:1个月1个星期前
加入:2020-05-26 18:20
你好,

你好,

我看到这个例子,但不能编译,所有的api都有一个黄色的三角形,这是另一个sdk的例子吗?如何添加要编译的引用?

PM_Dialog
离线
最后看到:2天5小时前
工作人员
加入:2018-02-08 11:03
嗨magergar。

嗨magergar。

I2C SW示例,和所有DA14531 SW示例一样,不包含SDK -如果你检查下载包,你会看到只包含应用层。为此,在使用示例之前,首先需要将其与SDK链接。

请查阅以下文件:

http://lpccs-docs.dialog-semiconductor.com/Software_Example_Setup/index.html

如果您正在使用SDK6.0.14,也请遵循以下步骤:

  1. 下载DA14585/DA14586 - DA14531多外围设备示例
  2. 复制DA14531- DA14585-586_Multiperipheral_Example\project_environment\dlg_make_keil5_env_v2.000.py并将其传递到DA14531- da14585-586_reading_i2c_accelerometer_ble\project_environment中
  3. 执行新的python脚本:

> python dlg_make_keil5_env_v2.000.py -sdkpath“

例如:

> python dlg_make_keil5_env_v2.000.py -sdkpath " C:\dev\6.0.12 "

我们正在更新这个例子上的python脚本,以便它可以在SDK6.0.14上运行。

谢谢,PM_Dialog

magergar
离线
最后看到:1个月1个星期前
加入:2020-05-26 18:20
你好,

你好,

使用这个例子,我设法创建一个工作的函数,尽管我有另一个问题,我使用P0_9作为我的SDA引脚,似乎在DevKit中的led影响与从机的通信。

我将让我使用的函数,以防有人需要它:

//我使用i2c_eeprom的例子只是修改引脚SDA->P0_7, SCL->P0_8,并从主循环调用这个函数

空白ReadTemp(空白)

//uint16_t I2C_Address = 0x4D;//从设备地址A5
i2c_abort_t abort_code;//可以用于错误检查
Uint8_t reg_addr = 0x00;//保存寄存器地址的变量
Uint8_t byte_received = 0x00;//接收字节的中间存储
/ /得到测量LSB
i2c_master_transmit_buffer_sync(®_addr, 1, &abort_code, I2C_F_NONE);//发送寄存器读取

i2c_master_receive_buffer_sync(&byte_received, 1, &abort_code, I2C_F_NONE);/ /读取缓冲区
printf_string (UART,“\ n \ rTemperature:”);
printf_byte(UART, (byte_received) & 0xFF);

PM_Dialog
离线
最后看到:2天5小时前
工作人员
加入:2018-02-08 11:03
嗨magergar,

嗨magergar,

谢谢你接受我的回答和你的建议。

谢谢,PM_Dialog