#define REG_RAWIRQSTATUS 0x024 // 定义原始中断状态寄存器的地址偏移值
#define REG_IRQSTATUS 0x028 // 定义中断状态寄存器的地址偏移值
#define REG_IRQENABLE 0x02C // 定义中断允许寄存器的地址偏移值
#define REG_IRQCLR 0x030 // 定义清除中断寄存器的地址偏移值
#define REG_IRQWAKEUP 0x034 // 定义中断唤醒寄存器的地址偏移值
#define REG_DMAENABLE_SET 0x038 // 定义DMA使能寄存器的地址偏移值
#define REG_DMAENABLE_CLEAR 0x03c // 定义DMA禁用寄存器的地址偏移值
#define REG_CTRL 0x040 // 定义控制寄存器的地址偏移值
#define REG_ADCFSM 0x044 // 定义转换状态机寄存器的地址偏移值
#define REG_CLKDIV 0x04C // 定义时钟分频器寄存器的地址偏移值
#define REG_SE 0x054 // 定义单端/差分输入控制寄存器的地址偏移值
#define REG_IDLECONFIG 0x058 // 定义空闲模式配置寄存器的地址偏移值
#define REG_CHARGECONFIG 0x05C // 定义电荷泵配置寄存器的地址偏移值
#define REG_CHARGEDELAY 0x060 // 定义电荷泵延迟寄存器的地址偏移值
#define REG_STEPCONFIG(n) (0x64 + ((n) * 8)) // 定义步骤配置寄存器的地址偏移值,其中 n 是步骤号
#define REG_STEPDELAY(n) (0x68 + ((n) * 8)) // 定义步骤延迟寄存器的地址偏移值,其中 n 是步骤号
#define REG_FIFO0CNT 0xE4 // 定义FIFO0计数寄存器的地址偏移值
#define REG_FIFO0THR 0xE8 // 定义FIFO0阈值寄存器的地址偏移值
#define REG_FIFO1CNT 0xF0 // 定义FIFO1计数寄存器的地址偏移值
#define REG_FIFO1THR 0xF4 // 定义FIFO1阈值寄存器的地址偏移值
#define REG_DMA1REQ 0xF8 // 定义DMA1请求寄存器的地址偏移值
#define REG_FIFO0 0x100 // 定义FIFO0寄存器的地址偏移值
#define REG_FIFO1 0x200 // 定义FIFO1寄存器的地址偏移值
/* 寄存器位域 /
/ IRQ唤醒使能 */
#define IRQWKUP_ENB BIT(0) // 定义irqwake使能位
/* 步骤启用 */
#define STEPENB_MASK (0x1FFFF << 0) // 定义步骤启用掩码
#define STEPENB(val) ((val) << 0) // 定义设置步骤启用寄存器值的宏
#define ENB(val) (1 << (val)) // 定义启用特定步骤的宏
#define STPENB_STEPENB STEPENB(0x1FFFF) // 定义所有步骤启用的宏
#define STPENB_STEPENB_TC STEPENB(0x1FFF) // 定义最后一个步骤启用的宏
/* IRQ使能 */
#define IRQENB_HW_PEN BIT(0) // 定义硬件 PENDOWN 中断使能位
#define IRQENB_EOS BIT(1) // 定义EOS中断使能位
#define IRQENB_FIFO0THRES BIT(2) // 定义FIFO0阈值中断使能位
#define IRQENB_FIFO0OVRRUN BIT(3) // 定义FIFO0溢出中断使能位
#define IRQENB_FIFO0UNDRFLW BIT(4) // 定义FIFO0下溢中断使能位
#define IRQENB_FIFO1THRES BIT(5) // 定义FIFO1阈值中断使能位
#define IRQENB_FIFO1OVRRUN BIT(6) // 定义FIFO1溢出中断使能位
#define IRQENB_FIFO1UNDRFLW BIT(7) // 定义FIFO1下溢中断使能位
#define IRQENB_PENUP BIT(9) // 定义PENUP中断使能位
/* 步骤配置 */
#define STEPCONFIG_MODE_MASK (3 << 0) // 定义模式掩码
#define STEPCONFIG_MODE(val) ((val) << 0) // 定义模式寄存器设置宏
#define STEPCONFIG_MODE_SWCNT STEPCONFIG_MODE(1) // 定义按软件计数模式的宏
#define STEPCONFIG_MODE_HWSYNC STEPCONFIG_MODE(2) // 定义按硬件同步模式的宏
#define STEPCONFIG_AVG_MASK (7 << 2) // 定义平均掩码
#define STEPCONFIG_AVG(val) ((val) << 2) // 定义平均寄存器设置宏
#define STEPCONFIG_AVG_16 STEPCONFIG_AVG(4) // 定义16点平均的宏
#define STEPCONFIG_XPP BIT(5) // 定义X+输入使能位
#define STEPCONFIG_XNN BIT(6) // 定义X-输入使能位
#define STEPCONFIG_YPP BIT(7) // 定义Y+输入使能位
#define STEPCONFIG_YNN BIT(8) // 定义Y-输入使能位
#define STEPCONFIG_XNP BIT(9) // 定义X-N输入使能位
#define STEPCONFIG_YPN BIT(10) // 定义Y-N输入使能位
#define STEPCONFIG_INM_MASK (0xF << 15) // 定义负极输入掩码
#define STEPCONFIG_INM(val) ((val) << 15) // 定义负极输入寄存器设置宏
#define STEPCONFIG_INM_ADCREFM STEPCONFIG_INM(8) // 定义ADCREFM的宏
#define STEPCONFIG_INP_MASK (0xF << 19) // 定义正极输入掩码
#define STEPCONFIG_INP(val) ((val) << 19) // 定义正极输入寄存器设置宏
#define STEPCONFIG_INP_AN4 STEPCONFIG_INP(4) // 定义AN4输入的宏
#define STEPCONFIG_INP_ADCREFM STEPCONFIG_INP(8) // 定义ADCREFM输入的宏
#define STEPCONFIG_FIFO1 BIT(26) // 定义将结果写入FIFO1的位
/* 延迟寄存器 */
#define STEPDELAY_OPEN_MASK (0x3FFFF << 0) // 定义打开延迟掩码
#define STEPDELAY_OPEN(val) ((val) << 0) // 定义打开延迟寄存器设置宏
#define STEPCONFIG_OPENDLY STEPDELAY_OPEN(0x3000) // 定义打开延迟的值
#define STEPDELAY_SAMPLE_MASK (0xFF << 24) // 定义采样延迟掩码
#define STEPDELAY_SAMPLE(val) ((val) << 24) // 定义采样延迟寄存器设置宏
#define STEPCONFIG_SAMPLEDLY STEPDELAY_SAMPLE(10) // 定义采样延迟的值
/* Charge Config:充电配置 */
#define STEPCHARGE_RFP_MASK (7 << 12) // RFP电阻值掩码
#define STEPCHARGE_RFP(val) ((val) << 12) // 设置RFP电阻值
#define STEPCHARGE_RFP_XPUL STEPCHARGE_RFP(1) // 将RFP电阻值默认设置为1
#define STEPCHARGE_INM_MASK (0xF << 15) // INM输入追踪模式掩码
#define STEPCHARGE_INM(val) ((val) << 15) // 设置INM输入追踪模式
#define STEPCHARGE_INM_AN1 STEPCHARGE_INM(1) // 将INM输入追踪模式默认设置为1
#define STEPCHARGE_INP_MASK (0xF << 19) // INP输入采样模式掩码
#define STEPCHARGE_INP(val) ((val) << 19) // 设置INP输入采样模式
#define STEPCHARGE_RFM_MASK (3 << 23) // RFM电阻值掩码
#define STEPCHARGE_RFM(val) ((val) << 23) // 设置RFM电阻值
#define STEPCHARGE_RFM_XNUR STEPCHARGE_RFM(1) // 将RFM电阻值默认设置为1
/* Charge delay:充电延迟时间 */
#define CHARGEDLY_OPEN_MASK (0x3FFFF << 0) // 开启延迟掩码
#define CHARGEDLY_OPEN(val) ((val) << 0) // 设置开启延迟时间
#define CHARGEDLY_OPENDLY CHARGEDLY_OPEN(0x400) // 将开启延迟时间默认设置为0x400
/* Control register:控制寄存器 */
#define CNTRLREG_TSCSSENB BIT(0) // 触摸屏控制使能
#define CNTRLREG_STEPID BIT(1) // 步骤ID
#define CNTRLREG_STEPCONFIGWRT BIT(2) // 步骤配置写入
#define CNTRLREG_POWERDOWN BIT(4) // 电源关闭
#define CNTRLREG_AFE_CTRL_MASK (3 << 5) // AFE控制模式掩码
#define CNTRLREG_AFE_CTRL(val) ((val) << 5) // 设置AFE控制模式
#define CNTRLREG_4WIRE CNTRLREG_AFE_CTRL(1) // AFE控制模式:4线模式
#define CNTRLREG_5WIRE CNTRLREG_AFE_CTRL(2) // AFE控制模式:5线模式
#define CNTRLREG_8WIRE CNTRLREG_AFE_CTRL(3) // AFE控制模式:8线模式
#define CNTRLREG_TSCENB BIT(7) // 触摸屏控制使能
/* FIFO READ Register:FIFO读寄存器 */
#define FIFOREAD_DATA_MASK (0xfff << 0) // 数据位掩码
#define FIFOREAD_CHNLID_MASK (0xf << 16) // 通道号掩码
/* DMA ENABLE/CLEAR Register:DMA使能/清除寄存器 */
#define DMA_FIFO0 BIT(0) // FIFO 0
#define DMA_FIFO1 BIT(1) // FIFO 1
/* Sequencer Status:时序器状态 */
#define SEQ_STATUS BIT(5) // 时序器运行状态
#define CHARGE_STEP 0x11 // 充电步骤:11
#define ADC_CLK 3000000 // ADC时钟频率
#define TOTAL_STEPS 16 // 总共的采样步骤数
#define TOTAL_CHANNELS 8 // 总共的采样通道数
#define FIFO1_THRESHOLD 19 // FIFO1阈值
/*
* time in us for processing a single channel, calculated as follows:
*
* max num cycles = open delay + (sample delay + conv time) * averaging
*
* max num cycles: 262143 + (255 + 13) * 16 = 266431
*
* clock frequency: 26MHz / 8 = 3.25MHz
* clock period: 1 / 3.25MHz = 308ns
*
* max processing time: 266431 * 308ns = 83ms(approx)
*/
#define IDLE_TIMEOUT 83 /* milliseconds */ // 单个采样通道处理时间,用于设定空闲超时时间
#define TSCADC_CELLS 2 // 数据结构中每个采样通道占用的字节数
linux tscadc.h
最新推荐文章于 2024-09-30 22:23:19 发布
这篇文章详细列出了一个嵌入式系统中与中断管理、DMA控制、寄存器配置相关的地址偏移值和位域定义,包括中断状态、使能、唤醒寄存器,DMA使能和清除寄存器,以及控制、时钟分频和采样配置等寄存器。此外,还涉及到了触摸屏控制相关的AFE配置和FIFO管理,说明了数据处理时间和超时设置。
摘要由CSDN通过智能技术生成