AD7606的并行采集

本文详细探讨了AD7606高速模数转换器的并行采集原理,阐述了其在数据采集系统中的应用,包括并行接口的工作方式、同步策略以及在高精度测量中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "bsp_ad7606.h"
#include "bsp_GPIO.h"

MYGPIO AD_Control_GPIO[] = 
{
   
	{
   GPIO_PORT_OS0,GPIO_PIN_OS0,OUTPUT},
	{
   GPIO_PORT_OS1,GPIO_PIN_OS1,OUTPUT},
	{
   GPIO_PORT_OS2,GPIO_PIN_OS2,OUTPUT},
	{
   GPIO_PORT_AD_RANGE,GPIO_PIN_AD_RANGE,OUTPUT},
	{
   GPIO_PORT_AD_CONA,GPIO_PIN_AD_CONA,OUTPUT},
	{
   GPIO_PORT_AD_CONB,GPIO_PIN_AD_CONB,OUTPUT},
	{
   GPIO_PORT_AD_RST,GPIO_PIN_AD_RST,OUTPUT},
	{
   GPIO_PORT_AD_RD,GPIO_PIN_AD_RD,OUTPUT},
	{
   GPIO_PORT_AD_CS,GPIO_PIN_AD_CS,OUTPUT},
	{
   GPIO_PORT_AD_BUSY,GPIO_PIN_AD_BUSY,INPUT},
	{
   GPIO_PORT_AD_FD,GPIO_PIN_AD_FD,INPUT}
};
MYGPIO AD_Data_GPIO[] = 
{
   
	{
   GPIO_PORT_AD_DB0,GPIO_PIN_AD_DB0,INPUT},
	{
   GPIO_PORT_AD_DB1,GPIO_PIN_AD_DB1,INPUT},
	{
   GPIO_PORT_AD_DB2,GPIO_PIN_AD_DB2,INPUT},
	{
   GPIO_PORT_AD_DB3,GPIO_PIN_AD_DB3,INPUT},
	{
   GPIO_PORT_AD_DB4,GPIO_PIN_AD_DB4,INPUT},
	{
   GPIO_PORT_AD_DB5,GPIO_PIN_AD_DB5,INPUT},
	{
   GPIO_PORT_AD_DB6,GPIO_PIN_AD_DB6,INPUT},
	{
   GPIO_PORT_AD_DB7,GPIO_PIN_AD_DB7,INPUT},
	{
   GPIO_PORT_AD_DB8,GPIO_PIN_AD_DB8,INPUT},
	{
   GPIO_PORT_AD_DB9,GPIO_PIN_AD_DB9,INPUT},
	{
   GPIO_PORT_AD_DB10,GPIO_PIN_AD_DB10,INPUT},
	{
   GPIO_PORT_AD_DB11,GPIO_PIN_AD_DB11,INPUT},
	{
   GPIO_PORT_AD_DB12,GPIO_PIN_AD_DB12,INPUT},
	{
   GPIO_PORT_AD_DB13,GPIO_PIN_AD_DB13,INPUT},
	{
   GPIO_PORT_AD_DB14,GPIO_PIN_AD_DB14,INPUT},
	{
   GPIO_PORT_AD_DB15,GPIO_PIN_AD_DB15,INPUT}
};









/* 设置过采样率 */
#define OS0_1()		 GPIO_WriteBit(GPIO_PORT_OS0,GPIO_PIN_OS0,(BitAction )(1))
#define OS0_0()		 GPIO_WriteBit(GPIO_PORT_OS0,GPIO_PIN_OS0,(BitAction )(0))
#define OS1_1()		 GPIO_WriteBit(GPIO_PORT_OS1,GPIO_PIN_OS1,(BitAction )(1))
#define OS1_0()		 GPIO_WriteBit(GPIO_PORT_OS1,GPIO_PIN_OS1,(BitAction )(0))
#define OS2_1()		 GPIO_WriteBit(GPIO_PORT_OS2,GPIO_PIN_OS2,(BitAction )(1))
#define OS2_0()		 GPIO_WriteBit(GPIO_PORT_OS2,GPIO_PIN_OS2,(BitAction )(0))

#define AD_OS_NO    {OS2_0();  OS1_0();   OS0_0();} 
#define AD_OS_X2    {OS2_0();  OS1_0();   OS0_1();}  
#define AD_OS_X4    {OS2_0();  OS1_1();	OS0_0();} 
#define AD_OS_X8    {OS2_0();  OS1_1();	OS0_1();}  
#define AD_OS_X16   {OS2_1();  OS1_0();	OS0_0();}  
#define AD_OS_X32   {OS2_1();  OS1_0();	OS0_1();} 
#define AD_OS_X64   {OS2_1();  OS1_1();	OS0_0();}  

/*启动AD转换*/
#define CONVST_1()	{ GPIO_WriteBit(GPIO_PORT_AD_CONA,GPIO_PIN_AD_CONA,(BitAction )(1));\
                      GPIO_WriteBit(GPIO_PORT_AD_CONB,GPIO_PIN_AD_CONB,(BitAction )(1));}  
#define CONVST_0()	{ GPIO_WriteBit(GPIO_PORT_AD_CONA,GPIO_PIN_AD_CONA,(BitAction )(0));\
                      GPIO_WriteBit(GPIO_PORT_AD_CONB,GPIO_PIN_AD_CONB,(BitAction )(0));}   

#define GET_BUSY()    GPIO_ReadInputDataBit(GPIO_PORT_AD_BUSY,GPIO_PIN_AD_BUSY) 
#define GET_FD()      GPIO_ReadInputDataBit(GPIO_PORT_AD_FD,GPIO_PIN_AD_FD) 
#define GET_DATA()    GPIO_ReadInputData(GPIO_PORT_AD_DB0)
#define SET_CS(x)     GPIO_WriteBit(GPIO_PORT_AD_CS,GPIO_PIN_AD_CS,(BitAction )(x))
#define SET_RD(x)     GPIO_WriteBit(GPIO_PORT_AD_RD,GPIO_PIN_AD_RD,(BitAction )(x))
#define SET_RST(x)    GPIO_WriteBit(GPIO_PORT_AD_RST,GPIO_PIN_AD_RST,(BitAction )(x))		/*设置复位*/									
#define RANGE(x)	    GPIO_WriteBit(GPIO_PORT_AD_RANGE,GPIO_PIN_AD_RANGE,(BitAction )(x))  	/*设置输入量*/										
											
											
											
											
											

/*
*********************************************************************************************************
*	函 数 名: BUSY_EXTI_TriggerMode
*	功能说明: 设置 BUSY 引脚设置为中断模式
*********************************************************************************************************
*/
static void  BUSY_EXTI_TriggerMode(void )
{
   
		EXTI_InitTypeDef   EXTI_InitStructure;
		GPIO_InitTypeDef   GPIO_InitStructure;
		NVIC_InitTypeDef   NVIC_InitStructure;

	   #if  AD7606_STM32F429
	   //PI10
		RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI, ENABLE); /* Enable GPIOI clock */
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);/* Enable SYSCFG clock */

		/* Configure PI10 pin as input floating */
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
		GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
		GPIO_Init(GPIOI, &GPIO_InitStructure);

		/* Connect EXTI Line10 to PI10 pin */
		SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI, EXTI_PinSource10);

		/* Configure EXTI Line10 */
		EXTI_InitStructure.EXTI_Line = EXTI_Line10;
		EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
		EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
		//EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
		EXTI_InitStructure.EXTI_LineCmd = ENABLE;
		EXTI_Init(&EXTI_InitStructure);

		/* Enable and set EXTI Line10 Interrupt to the lowest priority */
		NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
		NVIC_InitStructure
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值