完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
|
|
知识点1:ADC部分
(1)SIM_SCGC6使能ADC的时钟:这里选择第27位ADC0=1 (2)配置ADC配置寄存器(CFG) 7.ADLPC: 低功耗选择; 6-5.ADIV: 时钟分频选择,1/2/4/8分频; 4.ADLSMP:采样时间配置; 3-2.MODE:转换模式选择,单端或差分,不同的精度选择 1-0.ADICLK:输入时钟选择,总线时钟或交替时钟等; (3)配置ADC状态和控制寄存器(SC1n) 7.COCO:转换完成标志 6.AIEN:中断使能 5.DIFF:差分输入使能 4-0.ADCH:输入通道选择 |
|
|
|
|
|
知识点1:ADC部分
(1)SIM_SCGC6使能ADC的时钟:这里选择第27位ADC0=1 (2)配置ADC配置寄存器(CFG) 7.ADLPC: 低功耗选择; 6-5.ADIV: 时钟分频选择,1/2/4/8分频; 4.ADLSMP:采样时间配置; 3-2.MODE:转换模式选择,单端或差分,不同的精度选择 1-0.ADICLK:输入时钟选择,总线时钟或交替时钟等; (3)配置ADC状态和控制寄存器(SC1n) 7.COCO:转换完成标志 6.AIEN:中断使能 5.DIFF:差分输入使能 4-0.ADCH:输入通道选择 |
|
|
|
|
|
|
|
|
|
|
|
(2)计数器寄存器(FTMx_CNT)
15-0.COUNT:16位计数器,主要由向上计数和向上向下计数 (3)通道n控制和状态寄存器(FTMx_CnSC) (4)模寄存器(FTMx_MOD) |
|
|
|
|
|
实验步骤:
1.电路图引脚 飞思卡尔四色板板载两个可调电位器用来模拟ADC输入信号,我们选择其中的RV1来作为信号源: 另外我们选择PORTA7作为FTM控制输出边缘对齐的PWM波形的引脚。 |
|
|
|
|
|
2软件编程
主要分为两个部分,分别是ADC采样可调电位器电压部分和FTM受控制输出PWM波形 (1)ADC部分 ADC配置与初始化:采用ADC0通道单端模式,12位分辨率,其他参数采用默认设置 adc_calibration_param_t MyAdcCalibraitionParam;//calibration parameters adc_user_config_t MyAdcUserConfig;//ADC parameters adc_state_t MyAdcState; volatile int32_t adcValue;//the value we get /* Auto calibration.自动校准 */ ADC_DRV_GetAutoCalibrationParam(HW_ADC0, &MyAdcCalibraitionParam); ADC_DRV_SetCalibrationParam(HW_ADC0, &MyAdcCalibraitionParam); /* Initialization for interrupt mode.中断模式初始化 */ ADC_DRV_StructInitUserConfigForOneTimeTriggerMode(&MyAdcUserConfig);//set as one time trigger mode MyAdcUserConfig.resolutionMode = kAdcResolutionBitOf12or13;//12位单端分辨率,13位为差分模式 ADC_DRV_Init(HW_ADC0, &MyAdcUserConfig, &MyAdcState); |
|
|
|
|
|
2)FLM的PWM模式
配置: ftm_pwm_param_t ftmParam = { .mode = kFtmEdgeAlignedPWM,//边沿对齐PWM模式 .edgeMode = kFtmLowTrue, .uFrequencyHZ = 240000, .uDutyCyclePercent = 50,//占空比 .uFirstEdgeDelayPercent = 0, }; configure_ftm_pins(BOARD_FTM_INSTANCE);//FTM0通道输出 ftm_user_config_t ftmInfo; memset(&ftmInfo, 0, sizeof(ftmInfo)); FTM_DRV_Init(BOARD_FTM_INSTANCE, &ftmInfo);//初始化 (3)主循环 //获取AD值 adcValue = getVoltage(0, false, MyAdcUserConfig.resolutionMode); //PWM输出 FTM_DRV_PwmStart(BOARD_FTM_INSTANCE, &ftmParam, BOARD_FTM_CHANNEL); OSA_TimeDelay(50); //delay 50ms FTM_DRV_PwmStop(BOARD_FTM_INSTANCE, &ftmParam, BOARD_FTM_CHANNEL); //AD转换值作为PWM占空比输出 float a=adcValue; float b= a/4095; ftmParam.uDutyCyclePercent =(b*100); |
|
|
|
|
|
再接再厉,期待大作。
|
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
72 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
509 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
546 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
545 浏览 0 评论
1008 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 13:13 , Processed in 0.922093 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号