飞思卡尔小车程序ad

2022-10-11 15:22:10   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《飞思卡尔小车程序ad》,欢迎阅读!
卡尔,小车,程序

#include "common.h"

#include "liu_adc.h"

/********************************************************************/

//AD模块初始化

/********************************************************************/

uint8_t LIU_ADC_Init(ADC_MemMapPtr adcmap,uint8_t mode, uint8_t diff){

//函数的形参貌似只用了一个

//开启ADC模块时钟

/* if (adcmap == ADC1_BASE_PTR){

SIM_SCGC6 |= (SIM_SCGC6_ADC0_MASK);//系统时钟门控制寄存器6,adc0标志位设为1

}*/

SIM_SCGC3 |= (SIM_SCGC3_ADC1_MASK );//打开AD1时钟

//else return 0;

//校准(官方校准函数)

ADC_Cal(adcmap);

//初始化ADC

//sc2

ADC_SC2_REG(adcmap) &= ~ADC_SC2_ADTRG_MASK;//软触发

//软触发(重复了,不管了) | 比较器一系列都关了 | dma使能开 | 默认用电

ADC_SC2_REG(adcmap) |= (ADTRG_SW | ACFE_DISABLED | ACFGT_LESS | ACREN_DISABLED | DMAEN_ENABLED | ADC_SC2_REFSEL(REFSEL_EXT));

//sc3

//关掉了硬件平均使能&关掉了硬件平均选择通道(有关硬件触发的都关掉,没有用的说...

ADC_SC3_REG(adcmap) &= (~ADC_SC3_AVGE_MASK & ~ADC_SC3_AVGS_MASK);

//关掉CAL(忘了是啥了),打开adc连续使能(因为是dma,不能有单次触发)

ADC_SC3_REG(adcmap) |= CAL_OFF | ADC_SC3_ADCO_MASK;

//sc1

//关掉ad中断功能(使用dma不需要),单通道模式

ADC_SC1_REG(adcmap,A) |= (AIEN_OFF | DIFF_SINGLE) ;

ADC_SC1_REG(adcmap,B) |= (AIEN_OFF | DIFF_SINGLE) ;

//关掉ad通道使能(初始化关闭,而后以此作为ad使能开关)

ADC_SC1_REG(adcmap,A) &= ~(ADC_SC1_ADCH_MASK);

//cfg1

//普通电源模式|1分频|短模式|使用系统时钟|8位输出

ADC_CFG1_REG(adcmap) |= ADLPC_NORMAL | ADC_CFG1_ADIV(ADIV_1) | ADLSMP_SHORT | ADC_CFG1_ADICLK(ADICLK_BUS_2) | ADC_CFG1_MODE(MODE_8);

//cfg2

//选择多路开关a|打开ADACKEN时钟(不过没用上)|正常速度模式| 加额外的两个周期

ADC_CFG2_REG(adcmap) |= MUXSEL_ADCA | ADACKEN_ENABLED | ADHSC_NORMAL | ADLSTS_2 ;

return 1;

}

/********************************************************************/

//使能ad函数

void LIU_ADC_SE_Get()

{

// SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;

// PORT_PCR_REG(PORTA_BASE_PTR, 4-3) = PORT_PCR_MUX(0);

ADC_SC1_REG(ADC1_BASE_PTR,A) |= ADC_SC1_ADCH(4); //软件使能通道4

}

u8 ad_once() //采集某路模拟量的AD值

{

u8 result_ad;

while (( ADC_SC1_REG(ADC1_BASE_PTR,A) & ADC_SC1_COCO_MASK ) != ADC_SC1_COCO_MASK)

{

;//等待转换完成

}

result_ad = ADC_R_REG(ADC1_BASE_PTR,A);

ADC_SC1_REG(ADC1_BASE_PTR,A) &= ~ADC_SC1_COCO_MASK; //清ADC转换完成标志

return result_ad;

}

本文来源:https://www.dywdw.cn/d69c1ea4dd3383c4ba4cd20c.html

相关推荐
推荐阅读