[AURIX™] 【英飞凌CYW20829测评】IIC手势识别 + NCT ADC采集

[复制链接]
 楼主| dvacos 发表于 2024-7-4 21:08 | 显示全部楼层 |阅读模式
<
本帖最后由 dvacos 于 2024-7-4 21:12 编辑

进阶任务实现

一、ADC实验
1、确认ADC引脚

查看开发板的丝印,可以看见模拟接口,即ADC接口是A0-A3,对应芯片IO是P3-4 到P3-7,接下查看原理图进一步确认。

查看原理图后,发现A0还接了一个热敏电阻“THERMISTOR”,直接搜索“THERMISTOR”,可以看见开发板上已有相应的电路。

如上图,开发板上的热敏电阻,需要将J14连接后才接到引脚P3-4上,

开发板上,J14已连接。


2、软件配置
由于ADC没有参考的例程,所以需要从头写。

初始化函数

cyhal_adc_init(&adc_obj, CYBSP_THERMISTOR, NULL);
作用:
初始化ADC采样引脚

参数:
1、类型为cyhal_adc_t 的变量
2、ADC采样的引脚
3、使用默认的时钟,填NULL即可


cyhal_adc_channel_init_diff
作用:
配置ADC引脚与采样方式

参数
1、类型为cyhal_adc_channel_t 的变量
2、类型为cyhal_adc_t 的变量
3、ADC采样的引脚
4、如果不是差分对采样,就填CYHAL_ADC_VNEG
5、类型为cyhal_adc_channel_config_t 的变量,数值如下:
  1. <p>const  cyhal_adc_channel_config_t channel_config = {</p><p>.enable_averaging = false,</p><p>.min_acquisition_ns = 220,</p><p>.enabled = true };</p>

cyhal_adc_read
作用:
读取ADC值,返回值就是adc

参数
1、类型为cyhal_adc_channel_t 的变量

完整代码

  1. cyhal_adc_t         adc_obj;
  2. cyhal_adc_channel_t adc_chan_0_obj;
  3. int32_t adc_out;

  4. cyhal_adc_init(&adc_obj, CYBSP_THERMISTOR, NULL);

  5. const cyhal_adc_channel_config_t channel_config = {
  6.                 .enable_averaging = false,
  7.                 .min_acquisition_ns = 220,
  8.                 .enabled = true };

  9. cyhal_adc_channel_init_diff(&adc_chan_0_obj, &adc_obj, CYBSP_THERMISTOR, CYHAL_ADC_VNEG,&channel_config);

  10. for (;;) {

  11.         adc_out = cyhal_adc_read(&adc_chan_0_obj);
  12.         printf("NTC  Voltage %d\n\r",adc_out);

  13. }



二、IIC初始化 与 驱动手势传感器

1、引脚确认

IIC引脚已引出,并且有外部上拉。

开发板上已经引出了一组IIC引脚,P4.0 P4.1。直接初始化即可。


2、软件配置
在HAL_I2C_Master的基础上,修改代码来驱动paj7620u2,一个IIC接口的手势传感器。

原例程中已完成IIC初始化的配置,不需要修改,只要按照我们的需求修改IIC读、写函数接口,就可以完成驱动传感器。下面就是API的对比与参数描述:

例程中原本接口:
  1. <p>cyhal_i2c_master_write</p><p>cyhal_i2c_master_read</p>

查阅API的说明,发现例程中IIC读写接口只支持,单个地址的读写,不能带寄存器地址,需要修改API.


修改后:
  1. <p>cyhal_i2c_master_mem_write</p><p>cyhal_i2c_master_mem_read</p>

以上的读写接口,支持设备地址、寄存器地址的API。

cyhal_i2c_master_mem_read
作用:
读取IIC多字节数据

输入参数:
1、类型为cyhal_i2c_t 的变量
2、设备地址
3、寄存器地址
4、寄存器地址长度(8位的是1字节)
5、读取数据返回值数组
6、读取长度
7、超时时间

cyhal_i2c_master_mem_write 的参数是一致的,就不赘述了。


2、测试实验
驱动写好后,接好设备,验证IIC初始化 与 发送数据API正常工作。

测试代码
  1. <p>#define I2C_SLAVE_ADDR          (0x73)</p><p>cyhal_i2c_master_mem_write(&mI2C, I2C_SLAVE_ADDR, add_, 1, 0x43, 1, 0x10);</p>



0X73是八位的地址,0xE6就是0X73<<1的数值,所以发送数据与填写的一致。往后就是驱动的移植,按照正常的流程替换API即可,我就不赘述了。

三、进阶实验效果
paj7620u2获取手势   加   ADC采集NTC实验效果:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
chenjun89 发表于 2024-7-9 12:17 来自手机 | 显示全部楼层
手势识别就是靠光电传感器实现的哇
逢dududu必shu 发表于 2024-8-17 01:02 | 显示全部楼层
手势识别用于实现用户交互,而ADC采集用于监测外部传感器的模拟信号。
逢dududu必shu 发表于 2024-8-17 01:03 | 显示全部楼层
简要介绍项目背景为什么要结合I2C手势识别和NCT ADC采集功能进行测评
原来是wjc 发表于 2025-2-28 23:21 | 显示全部楼层
为了初始化ADC,需要使用 cyhal_adc_init 函数,它会初始化ADC采样引脚。
略略u 发表于 2025-4-29 13:04 | 显示全部楼层
一旦完成初始化,你就可以开始读取 ADC 数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

115

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部