[AURIX™]

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

[复制链接]
307|1
手机看帖
扫描二维码
随时随地手机跟帖
dvacos|  楼主 | 2024-7-4 21:08 | 显示全部楼层 |阅读模式
本帖最后由 dvacos 于 2024-7-4 21:12 编辑

进阶任务实现

一、ADC实验
1、确认ADC引脚
62f7ca22b69a4774a1a4f35c0a921f64
查看开发板的丝印,可以看见模拟接口,即ADC接口是A0-A3,对应芯片IO是P3-4 到P3-7,接下查看原理图进一步确认。
e25561fb4322086f318c568a13b6d60b
查看原理图后,发现A0还接了一个热敏电阻“THERMISTOR”,直接搜索“THERMISTOR”,可以看见开发板上已有相应的电路。
67fb37c468c473cbbfba0db780a4998a
如上图,开发板上的热敏电阻,需要将J14连接后才接到引脚P3-4上,
20832955b828a83a933f3874f077ff20
开发板上,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 的变量,数值如下:
<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 的变量

完整代码

cyhal_adc_t         adc_obj;
cyhal_adc_channel_t adc_chan_0_obj;
int32_t adc_out;

cyhal_adc_init(&adc_obj, CYBSP_THERMISTOR, NULL);

const cyhal_adc_channel_config_t channel_config = {
                .enable_averaging = false,
                .min_acquisition_ns = 220,
                .enabled = true };

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

for (;;) {

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

}



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

1、引脚确认
621059b63b66bf5dcbc023f8194e2a7b
IIC引脚已引出,并且有外部上拉。
1d722691b0185731406b14f2661cb4de
开发板上已经引出了一组IIC引脚,P4.0 P4.1。直接初始化即可。


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

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

例程中原本接口:
<p>cyhal_i2c_master_write</p><p>cyhal_i2c_master_read</p>
a1da4ffdf1c20a744003d7816a1c6c21
查阅API的说明,发现例程中IIC读写接口只支持,单个地址的读写,不能带寄存器地址,需要修改API.


修改后:
<p>cyhal_i2c_master_mem_write</p><p>cyhal_i2c_master_mem_read</p>
b460348ba826f94976b449fb50bffd6b
以上的读写接口,支持设备地址、寄存器地址的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正常工作。

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


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

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


使用特权

评论回复
chenjun89| | 2024-7-9 12:17 | 显示全部楼层
手势识别就是靠光电传感器实现的哇

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

92

帖子

0

粉丝