跳转到主要内容

很难添加I2C功能

DA1468x

4年前

发布的jamesleo-konka0点 3回复
0的问题

嗨,对话框中,
一个星期了,但我不能添加I2C hrp_sensor项目。
在开始,我研究peripherals_demo了解dg_configUSExxx和文件系统的一个项目。
然后我搬到hrp_sensor项目,因为它使ble函数,这是我的目标。
不容易理解项目peripherals_demo文件嵌套,主要。c - > periph_setup。c - - > demo_i2c。c .....
项目hrp_sensor很简单,只有2个文件。
但是,简单的工作添加I2C hrp_sensor卡住了。
这些是我遵循的步骤:
1。在custom_config_qspi.h
#定义dg_configUSE_HW_I2C 1
#定义dg_configI2C_ADAPTER 1

迁移platform_device的代码。h,像这样:
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#如果dg_configI2C_ADAPTER
I2C_BUS (I2C1)
I2C_SLAVE_DEVICE (I2C1“MAX30100”, 0机加区,HW_I2C_ADDRESSING_7B, HW_I2C_SPEED_STANDARD);
I2C_BUS_END

# endif / * dg_configI2C_ADAPTER * /
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

包括“ad_i2c。h”/ / - - -定义I2C_BUS ()

2。c
注释掉platform_device。h——这是一种常见的文件为每个项目和定位:\ sdk \ \包括适配器
/ / # include“platform_devices.h”

# include“hw_i2c.h”

在periph_init功能添加I2C初始化代码
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ /对I2C - - - - - - - - - - - hw init
/ *
*初始化I2C控制器在主模式与标准(100 kb / s)和通信速度
*在7位寻址模式转移。
* /
静态常量i2c_config cfg = {
。speed = HW_I2C_SPEED_STANDARD,
.mode = HW_I2C_MODE_MASTER,
.addr_mode = HW_I2C_ADDRESSING_7B,
};

hw_i2c_init (HW_I2C1 cfg);

将srand (OS_GET_TICK_COUNT ());/ / ?

hw_i2c_disable (HW_I2C1);

hw_i2c_set_target_address (HW_I2C1 0 x7e);/ / max30100

hw_i2c_enable (HW_I2C1);

/ *
*设置地址在我们的例子中意味着我们将开始一些新的设备的转移。对于这个
*原因很好复位中断源为了开始在清洁状态(为了避免
*中断源由以前的转移到其他设备),否则我们需要记住
*关于这个之前每个单独转让。
* /
hw_i2c_reset_abort_source (HW_I2C1);
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

在构建这个项目时,有一个错误:找不到ad_i2c。h”!——但在包括文件ad_i2c。h:包括- > hrp_sensor / sdk /适配器/包括
怎么了?

有指南/手动添加I2C periperal一步一步?
请给我一个项目基于hrp_sensor I2C扩展吗?

谢谢

接受答案!

4年前

MT_dialog -30点

嗨jamesleo-konka,

1)使custom_config_qspi。h文件是正确的,所以您可以使用qspi hw和适配器。

2)关于platform_devices。h文件我已经提到过你其他的职位,如果你有一个自定义一个这将使用,而不是默认的一个。

3)支持网站上没有上传文件,不过你不需要调用函数,你提到的periph_setup()函数。的
periph_init本质上是一个回调函数,periph_setup()函数存储和调用函数的指针(如果不为空。所以在
periph_setup()函数您必须配置您的I2C functionallity别针,通常hw_gpio_configure()使用gpio_config数组通过
作为一个参数的conifguration每个销,使用HW_GPIO_PINCONFIG宏。初始化的I2C hw将通过I2C适配器所以你完成
不需要显式地用在外设initalization(即如果你定义了外部设备platform_devices正确。h文件)

当hw_i2c_set_target_address()调用,这并不意味着一个i2c事务开始,你只是设定目标i2c模块的寄存器,
该模块将输出的数据总线上的一旦你开始一个事务通过使用可用的API。例如当你设定针在periph_setup()函数在platform_devices并宣布你的设备。h文件和offcourse您启用了i2c适配器和驱动程序,您开始一个事务,例如从传感器读取一个字节使用下面的命令your_device 's_handle = ad_i2c_open (your_device)然后ad_i2c_transact (your_device 's_handle, address_to_read,大小,out_buffer,大小)。

关于ad_i2c。h文件,编译器不会找到它我无法复制,eclipse发现ad_i2c。h文件当我将它添加到hrp_sensor_task。c文件,目录sdk /适配器/包括包括路径吗?

关于这个项目的要求,我很抱歉但是没有心率项目基于I2C传感器。

由于MT_dialog

4年前

jamesleo-konka 0点

嗨MT_Dialog,
谢谢你的回复。
根据对话框的方法的工程师,我试图在custom_config_qspi init I2C适配器。h ' ad_i2c.h '但是失败了。
真奇怪,“ad_i2c。h”不能被包括在custom_config_qspi。h,但如果用于主要。c !

所以我搬到主要的代码。c,它通过建立。

在项目peripherals_demo的端口/销在periph_setup初始化(),还I2C: demo_i2c_init ()
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
空白demo_i2c_init(空白)
{
/ *
*初始化I2C控制器在主模式与标准(100 kb / s)和通信速度
*在7位寻址模式转移。
* /
静态常量i2c_config cfg = {
。speed = HW_I2C_SPEED_STANDARD,
.mode = HW_I2C_MODE_MASTER,
.addr_mode = HW_I2C_ADDRESSING_7B,
};

hw_i2c_init (HW_I2C1 cfg);
将srand (OS_GET_TICK_COUNT ());
}

/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

似乎没有GPIO口/针需要初始化。
顺便说一句,最后一行的功能:将srand (OS_GET_TICK_COUNT ());吗?

我将检查I2C的adat的代码,就像ad_i2c_open (i2c_device_id dev_id), ad_i2c_transact,……

谢谢

4年前

MT_dialog -30点

嗨jamesleo-konka,

你不需要,这是外围设备演示中使用,因为它使用rand()函数来填充随机数据的写入缓冲器(它将随机数据写入了eepm)。

由于MT_dialog