完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 本帖最后由 wizardli 于 2015-9-10 21:46 编辑 一般来说,ADC和UART是学习硬件不可缺少的两部分。想当年用51做这两部分裸驱动的开发还挺麻烦,现在嘛,时代在变化,调用个API就搞定了,所以我们把效率也提升一下,两个一起学习! ok,怎么一起学习?我们要监测电池电量,然后用串口助手打印出来。 千篇一律的用QBlue软件配置IO口,偶们不说了,还没掌握的看之前的帖子。 我们直接讲解程序: 先是头文件,我是直接复制例程中的头文件的,包括 #include "system.h" #include "uart.h" #include "gpio.h" #include "spi.h" #include "timer.h" #include "pwm.h" #include "dma.h" #include "serialflash.h" #include "adc.h" #include "analog.h" #include "calibration.h" #include "lib.h" 有的可能用不上啦,比如pwm.h 不管怎么样,肯定是好用的。 然后进入主函数,步骤是: 1. SystemInit();系统初始化 2. adc_pin_enable(AIN0, MASK_ENABLE); adc_pin_enable(AIN1, MASK_ENABLE); 把adc的两路输入引脚使能,不然怎么采集呢。 3. 再初始化串口啦 uart_init(QN_UART0, __USART_CLK, UART_115200); uart_tx_enable(QN_UART0, MASK_ENABLE); uart_init()就是串口的初始化函数,可配置的是:uart0/uart1可选,串口运行时钟可选,波特率可选。 我们要把数据写入串口调试助手中,那自然就要把UART0的tx(写)使能啦。 这样就可以使用串口了,是不是很简单? 4. 然后我们走以下步骤:电量监测使能-》初始化adc-》把dac的各个配置弄好-》用adc_read()函数配置好adc的各个参数-》待模数转换完毕在串口打印出来具体如下: battery_monitor_enable(MASK_ENABLE);电量监测使能 int16_t battv; adc_init(ADC_SINGLE_WITH_BUF_DRV, ADC_CLK_1000000, ADC_INT_REF, ADC_12BIT);初始化adc adc_done = 0; read_cfg.trig_src = ADC_TRIG_SOFT;把dac的各个配置弄好 read_cfg.mode = SINGLE_MOD; read_cfg.start_ch = BATT; read_cfg.end_ch = BATT; adc_read(&read_cfg, &battv, 1, adc_test_cb);用adc_read()函数配置好adc的各个参数 while (adc_done == 0);待模数转换完毕 printf("battery voltage: %d ", 4*ADC_RESULT_mV(battv));在串口打印出来 整个代码如下: #include "system.h" #include "adc.h" #include "timer.h" #include "pwm.h" #include "analog.h" #include "uart.h" #include "stdio.h" #define ADC_TRIG_BY_SOFT TRUE #define ADC_BATT_MONITOR_EN TRUE volatile uint32_t adc_done = 0; volatile uint32_t int_num = 0; int16_t buf[512]; static void adc_test_cb(void) { adc_done = 1; } int main (void) { SystemInit(); adc_pin_enable(AIN0, MASK_ENABLE); adc_pin_enable(AIN1, MASK_ENABLE); uart_init(QN_UART0, __USART_CLK, UART_115200); uart_tx_enable(QN_UART0, MASK_ENABLE); adc_read_configuration read_cfg; read_cfg.trig_src = ADC_TRIG_SOFT; #if (ADC_BATT_MONITOR_EN==TRUE) battery_monitor_enable(MASK_ENABLE); int16_t battv; adc_init(ADC_SINGLE_WITH_BUF_DRV, ADC_CLK_1000000, ADC_INT_REF, ADC_12BIT); adc_done = 0; read_cfg.trig_src = ADC_TRIG_SOFT; read_cfg.mode = SINGLE_MOD; read_cfg.start_ch = BATT; read_cfg.end_ch = BATT; adc_read(&read_cfg, &battv, 1, adc_test_cb); while (adc_done == 0); printf("battery voltage: %d ", 4*ADC_RESULT_mV(battv)); #endif while (1) /* Loop forever */ { } } ` |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
649 浏览 0 评论
【KV260视觉入门套件试用体验】四、KV260 视觉入门套件和固件更新
1057 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI Library体验之OCR识别
775 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI 通过迁移学习训练自定义模型
1015 浏览 0 评论
【KV260视觉入门套件试用体验】KV260系列之Petalinux镜像+Resnet 50探索
784 浏览 0 评论
【AMD KV260视觉入门开发套件试用】4、简单几步体验ubuntu 20.04.3 LTS运行人员检测应用
1501浏览 1评论
433浏览 1评论
【KV260视觉入门套件试用体验】老刘记事儿KV260初体验之Micro-SD选型提速研究(三)
708浏览 1评论
【KV260视觉入门套件试用体验】KV260部署yolov3实现车辆和行人检测
2122浏览 1评论
【KV260视觉入门套件试用体验】基于KV260的人脸识别的实现与展示
719浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 12:21 , Processed in 0.708627 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号