linux tscadc.h

#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 // 数据结构中每个采样通道占用的字节数

你可能感兴趣的:(单片机,fpga开发,stm32)