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

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

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

我的问题是,当我查看i2c和i2c时,我不能理解它是如何工作的

我如何开始与Slave通信?

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

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

如果调用i2c_release()又会怎样呢?

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

关于ACK和NACK我如何发送或读取它们,START和STOP位也是一样

我假设这是在一个函数中完成的我不知道怎么做,在哪里做

希望你能帮助我理解这一点

PM_Dialog
离线
最后看到:1周3天前
工作人员
加入:2018-02-08 11:03
嗨magergar,

嗨magergar,

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

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

如果你有任何后续问题,请告诉我。

谢谢,PM_Dialog

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

你好,

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

PM_Dialog
离线
最后看到:1周3天前
工作人员
加入: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.00 .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
离线
最后看到:3个月2个星期前
加入:2020-05-26 18:20
你好,

你好,

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

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

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

空白ReadTemp(空白)

//uint16_t I2C_Address = 0x4D;//从设备地址
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
离线
最后看到:1周3天前
工作人员
加入:2018-02-08 11:03
嗨magergar,

嗨magergar,

谢谢你接受我的回答和你的意见。

谢谢,PM_Dialog