本帖最后由 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 的变量,数值如下:
<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、引脚确认
IIC引脚已引出,并且有外部上拉。
开发板上已经引出了一组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>
查阅API的说明,发现例程中IIC读写接口只支持,单个地址的读写,不能带寄存器地址,需要修改API.
修改后:
<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正常工作。
测试代码
<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实验效果:
|