📄 ad.h
字号:
#include "DSP240x_Device.h"
/*
This module defines the bit positions in various AD registers. For other
registers more definitions are needed.
*/
// ADCTRL1
#define ADC_RESET 0x4000
#define ADC_SOFT 0x2000
#define ADC_FREE 0x1000
//采样时间选择位
#define ACQ_PS_0 0x0000
#define ACQ_PS_1 0x0100
#define ACQ_PS_2 0x0200
#define ACQ_PS_3 0x0300
#define ACQ_PS_4 0x0400
#define ACQ_PS_5 0x0500
#define ACQ_PS_6 0x0600
#define ACQ_PS_7 0x0700
#define ACQ_PS_8 0x0800
#define ACQ_PS_9 0x0900
#define ACQ_PS_10 0x0A00
#define ACQ_PS_11 0x0B00
#define ACQ_PS_12 0x0C00
#define ACQ_PS_13 0x0D00
#define ACQ_PS_14 0x0E00
#define ACQ_PS_15 0x0F00
//转换时钟预定标位
#define CPS 0x0080
//连续转换位
#define CONT_RUN 0x0040
//ADC中断优先级
#define ADC_INT_PRI 0x0020
//排序器工作模式位
#define ADC_SEQ_ACSC 0x0010
//偏差校准使能位
#define CAL_ENA 0x0008
//桥使能位
#define BRG_ENA 0x0004
//VREFHI,VREFLO选择位
#define HI_LO 0x0002
//自测试使能位
#define STEST_ENA 0x0001
// ADCTRL2
//EVB 的SOC信号为级连排序器使能位
#define EVB_SOC_SEQ 0x8000
//复位排序器1/启动校准转换方式位
#define RST_SEQ1 0x4000
#define STRT_CAL 0x4000
//启动SERQ1转换位
#define SOC_SEQ1 0x2000
//
#define SEQ1_BSY 0x1000
#define INT_ENA_SEQ1_0 0x0000
#define INT_ENA_SEQ1_1 0x0400
#define INT_ENA_SEQ1_2 0x0800
#define INT_FLAG_SEQ1 0x0200
//事件管理器A对SEQ1产生SOC信号的屏蔽位
#define EVA_SOC_SEQ1 0x0100
//外部信号对SEQ1的启动转换位
#define EXT_SOC_SEQ1 0x0080
//复位排序器1/启动校准转换方式位
#define RST_SEQ2 0x0040
//启动SERQ2转换位
#define SOC_SEQ2 0x0020
#define SEQ2_BSY 0x0010
#define INT_ENA_SEQ2_0 0x0000
#define INT_ENA_SEQ2_1 0x0004
#define INT_ENA_SEQ2_2 0x0008
#define INT_FLAG_SEQ2 0x0002
//事件管理器B对SEQ2产生SOC信号的屏蔽位
#define EVB_SOC_SEQ2 0x0001
/*
MAXCONV
*/
#define MAXCONV_16 0xF
#define MAXCONV_15 0xE
#define MAXCONV_14 0xD
#define MAXCONV_13 0xC
#define MAXCONV_12 0xB
#define MAXCONV_11 0xA
#define MAXCONV_10 0x9
#define MAXCONV_9 0x8
#define MAXCONV_8 0x7
#define MAXCONV_7 0x6
#define MAXCONV_6 0x5
#define MAXCONV_5 0x4
#define MAXCONV_4 0x3
#define MAXCONV_3 0x2
#define MAXCONV_2 0x1
#define MAXCONV_1 0x0
/*
AUTO_SEQ_SR
*/
#define SEQ_CNTR_15 0x0F00
#define SEQ_CNTR_14 0x0E00
#define SEQ_CNTR_13 0x0D00
#define SEQ_CNTR_12 0x0C00
#define SEQ_CNTR_11 0x0B00
#define SEQ_CNTR_10 0x0A00
#define SEQ_CNTR_9 0x0900
#define SEQ_CNTR_8 0x0800
#define SEQ_CNTR_7 0x0700
#define SEQ_CNTR_6 0x0600
#define SEQ_CNTR_5 0x0500
#define SEQ_CNTR_4 0x0400
#define SEQ_CNTR_3 0x0300
#define SEQ_CNTR_2 0x0200
#define SEQ_CNTR_1 0x0100
#define SEQ_CNTR_0 0x0000
#define AUTO_SEQ_SR2_7 0x0070
#define AUTO_SEQ_SR2_6 0x0060
#define AUTO_SEQ_SR2_5 0x0050
#define AUTO_SEQ_SR2_4 0x0040
#define AUTO_SEQ_SR2_3 0x0030
#define AUTO_SEQ_SR2_2 0x0020
#define AUTO_SEQ_SR2_1 0x0010
#define AUTO_SEQ_SR2_0 0x0000
#define AUTO_SEQ_SR2_7 0x0070
#define AUTO_SEQ_SR2_6 0x0060
#define AUTO_SEQ_SR2_5 0x0050
#define AUTO_SEQ_SR2_4 0x0040
#define AUTO_SEQ_SR2_3 0x0030
#define AUTO_SEQ_SR2_2 0x0020
#define AUTO_SEQ_SR2_1 0x0010
#define AUTO_SEQ_SR2_0 0x0000
#define AUTO_SEQ_SR_15 0x000F
#define AUTO_SEQ_SR_14 0x000E
#define AUTO_SEQ_SR_13 0x000D
#define AUTO_SEQ_SR_12 0x000C
#define AUTO_SEQ_SR_11 0x000B
#define AUTO_SEQ_SR_10 0x000A
#define AUTO_SEQ_SR_9 0x0009
#define AUTO_SEQ_SR_8 0x0008
#define AUTO_SEQ_SR_7 0x0007
#define AUTO_SEQ_SR_6 0x0006
#define AUTO_SEQ_SR_5 0x0005
#define AUTO_SEQ_SR_4 0x0004
#define AUTO_SEQ_SR_3 0x0003
#define AUTO_SEQ_SR_2 0x0002
#define AUTO_SEQ_SR_1 0x0001
#define AUTO_SEQ_SR_0 0x0000
#define AUTO_SEQ_SR1_7 0x0007
#define AUTO_SEQ_SR1_6 0x0006
#define AUTO_SEQ_SR1_5 0x0005
#define AUTO_SEQ_SR1_4 0x0004
#define AUTO_SEQ_SR1_3 0x0003
#define AUTO_SEQ_SR1_2 0x0002
#define AUTO_SEQ_SR1_1 0x0001
#define AUTO_SEQ_SR1_0 0x0000
#define CONV_NUM 15
void AD_Init(void);
//ADCTRL1参数设定,具体见上表
//使用方法:ADCTRL1_PARA_SET(ACQ_PS_x),ADC时钟的预定标系数
//ADCTRL1_PARA_SET(CPS),ADC转换逻辑时钟的预定标系数
//ADCTRL1_PARA_SET(CONT_RUN),设定排序器工作模式
//ADCTRL1_PARA_SET(SEQ_ACSC),设定级连排序器工作方式
//ADCTRL1_PARA_SET(ADC_RESET),ADC模块软件复位
//ADCTRL1_PARA_SET(CAL_ENA),ADC偏差校准使能位
//ADCTRL1_PARA_SET(BRG_ENA),ADC桥使能位
//ADCTRL1_PARA_SET(HI_LO),VREFHI作为ADC输入的值
//ADCTRL1_PARA_SET(STEST_ENA),使能自测试模式
void ADCTRL1_PARA_SET(unsigned int PARA);
//ADCTRL1参数设定,具体见上表
//使用方法:ADCTRL1_PARA_SET(ACQ_PS_x),ADC时钟的预定标系数
//ADCTRL1_PARA_UNSET(CPS),ADC转换逻辑时钟的预定标系数为CLK/2;
//ADCTRL1_PARA_UNSET(CONT_RUN),设定排序器工作模式
//ADCTRL1_PARA_UNSET(SEQ_ACSC),设定级连排序器工作方式
//ADCTRL1_PARA_UNSET(ADC_RESET),ADC模块软件复位
//ADCTRL1_PARA_UNSET(CAL_ENA),ADC偏差校准使能位
//ADCTRL1_PARA_UNSET(BRG_ENA),ADC桥使能位
//ADCTRL1_PARA_UNSET(HI_LO),VREFHI作为ADC输入的值
//ADCTRL1_PARA_UNSET(STEST_ENA),使能自测试模式
void ADCTRL1_PARA_UNSET(unsigned int PARA);
//ADCTRL2参数设定,
//使用方法:ADCTRL2_PARA_SET(EVB_SOC_SEQ),允许级连的排序器SEQ被EVB启动
//ADCTRL2_PARA_SET(RST_SEQ1),立即复位排序器
//ADCTRL2_PARA_SET(SOC_SEQ1),通过向这位写1来软件启动SEQ1转换
//ADCTRL2_PARA_SET(INT_ENA_SEQ1_X),SEQ1的中断方式使能控制位
//ADCTRL2_PARA_SET(EVA_SOC_SEQ1),允许SEQ1\SEQ被EVA的触发源启动
//ADCTRL2_PARA_SET(EXT_SOC_SEQ1),允许外部的ADCSOC引脚上的信号启动ADC自动转换
//ADCTRL2_PARA_SET(RST_SEQ2),复位排序器2
//ADCTRL2_PARA_SET(SOC_SEQ2),软件触发启动排序器2
//ADCTRL2_PARA_SET(INT_ENA_SEQ2_X),SEQ2的中断方式使能控制位
//ADCTRL2_PARA_SET(EVB_SOC_SEQ2),允许SEQ2被EVB的触发源启动
unsigned int ADCTRL1_PARA_GET(unsigned int PARA);
void ADCTRL2_PARA_SET(unsigned int PARA);
//ADCTRL2参数设定,
//使用方法:ADCTRL2_PARA_SET(EVB_SOC_SEQ),允许级连的排序器SEQ被EVB启动
//ADCTRL2_PARA_SET(RST_SEQ1),立即复位排序器
//ADCTRL2_PARA_SET(SOC_SEQ1),通过向这位写1来软件启动SEQ1转换
//ADCTRL2_PARA_SET(INT_ENA_SEQ1_X),SEQ1的中断方式使能控制位
//ADCTRL2_PARA_SET(EVA_SOC_SEQ1),允许SEQ1\SEQ被EVA的触发源启动
//ADCTRL2_PARA_SET(EXT_SOC_SEQ1),允许外部的ADCSOC引脚上的信号启动ADC自动转换
//ADCTRL2_PARA_SET(RST_SEQ2),复位排序器2
//ADCTRL2_PARA_SET(SOC_SEQ2),软件触发启动排序器2
//ADCTRL2_PARA_SET(INT_ENA_SEQ2_X),SEQ2的中断方式使能控制位
//ADCTRL2_PARA_SET(EVB_SOC_SEQ2),允许SEQ2被EVB的触发源启动
void ADCTRL2_PARA_UNSET(unsigned int PARA);
//ADCTRL2参数获取,
//使用方法:
//ADCTRL2_PARA_SET(SEQ1_BSY),测试SEQ1是否处于忙状态
//ADCTRL2_PARA_GET(INT_FLAG_SEQ1),测试SEQ!是否发生过中断事件
//ADCTRL2_PARA_SET(SEQ2_BSY),测试SEQ2是否处于忙状态
//ADCTRL2_PARA_GET(INT_FLAG_SEQ2),测试SEQ2是否发生过中断事件
//是,返回1,否则返回0
unsigned int ADCTRL2_PARA_GET(unsigned int PARA);
void ADC_CONV_NUM_SET(unsigned int CONV_NUM_VAL);
void ADC_CONV_RESULT_GET(unsigned int *p);
void READ_AD(unsigned int *p);
void AD_Test(void);
void light_value(unsigned int *p,unsigned int maxconv_num);
extern unsigned int nNewConvert;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -