初级会员
- 积分
- 62
- 金钱
- 62
- 注册时间
- 2015-8-17
- 在线时间
- 12 小时
|
发表于 2022-3-28 14:20:29
|
显示全部楼层
AD7606.C
#include <stm32f10x.h>
#include "Delay.h"
#include "AD7606.h" // 这个 AD7606.c 文件已修改, 与AD7606.h保持一致,原版保存在同一目录下,文件名加长说明。
#include "lze_lcd.h"
extern u8 IO_TAG;
//-----------------------------------------------------------------
// 初始化程序区
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// void GPIO_AD7606_Configuration(void)
//-----------------------------------------------------------------
//
// 函数功能: AD7606引脚配置函数
// 入口参数: 无
// 返回参数: 无
// 全局变量: 无
// 调用模块: RCC_APB2PeriphClockCmd(); GPIO_Init();
// 注意事项: 用GPIO驱动方式和FSMC驱动方式下的引脚配置不一样
//
//-----------------------------------------------------------------
void GPIO_AD7606_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 使能IO口时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC , ENABLE);
GPIO_DeInit(GPIOA);//将GPIOx外设寄存器初始化为默认复位值
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
// GPIO_DeInit(GPIOD);
// GPIO_DeInit(GPIOE);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// AD7606
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 控制线配置
// CS_N RD/SCLK
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// FRSTDATA BUSY
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//#define clk_Set GPIO_SetBits (GPIOA,GPIO_Pin_7)
//#define clk_Reset GPIO_ResetBits(GPIOA,GPIO_Pin_7)
//#define cs_Set GPIO_SetBits (GPIOA,GPIO_Pin_6)
//#define cs_Reset GPIO_ResetBits(GPIOA,GPIO_Pin_6)
//#define busy_Set GPIO_SetBits (GPIOA,GPIO_Pin_5)
//#define busy_Reset GPIO_ResetBits(GPIOA,GPIO_Pin_5)
//#define frstdata_Set GPIO_SetBits (GPIOA,GPIO_Pin_4)
//#define frstdata_Reset GPIO_ResetBits(GPIOA,GPIO_Pin_4)
// rst convstB convstA STby
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8| GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//#define rst_Set GPIO_SetBits (GPIOB,GPIO_Pin_8) //#define rst_Set GPIO_SetBits (GPIOC,GPIO_Pin_8)
//#define rst_Reset GPIO_ResetBits(GPIOB,GPIO_Pin_8) //#define rst_Reset GPIO_ResetBits(GPIOC,GPIO_Pin_8)
//#define convstB_Set GPIO_SetBits (GPIOB,GPIO_Pin_9) //#define convstB_Set GPIO_SetBits (GPIOC,GPIO_Pin_9)
//#define convstB_Reset GPIO_ResetBits(GPIOB,GPIO_Pin_9) //#define convstB_Reset GPIO_ResetBits(GPIOC,GPIO_Pin_9)
//#define convstA_Set GPIO_SetBits (GPIOB,GPIO_Pin_10)
//#define convstA_Reset GPIO_ResetBits(GPIOB,GPIO_Pin_10)
//#define STby_Set GPIO_SetBits(GPIOB,GPIO_Pin_11)
// OS10 OS11 OS12
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 ;//
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure); // GPIO_Init(GPIOC, &GPIO_InitStructure);
//#define OS10_Set GPIO_SetBits (GPIOB,GPIO_Pin_15)
//#define OS10_Reset GPIO_ResetBits(GPIOB,GPIO_Pin_15)
//#define OS11_Set GPIO_SetBits (GPIOB,GPIO_Pin_14)
//#define OS11_Reset GPIO_ResetBits(GPIOB,GPIO_Pin_14)
//#define OS12_Set GPIO_SetBits (GPIOB,GPIO_Pin_13)
//#define OS12_Reset GPIO_ResetBits(GPIOB,GPIO_Pin_13)
// 上计11根接线
//数据线配置(1)
// DoutA DB7 -->GPIOB,GPIO_Pin_0
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure); // GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //LED13-->PC13 端口配置 板载 LED灯
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8
GPIO_SetBits(GPIOC,GPIO_Pin_13);
}
//-----------------------------------------------------------------
// void AD7606_Init(void)
//-----------------------------------------------------------------
//
// 函数功能: AD7606初始化函数
// 入口参数: 无
// 返回参数: 无
// 全局变量: 无
// 调用模块:
// 注意事项: 无
//-----------------------------------------------------------------
void AD7606_Init(void)
{
convstA_Set;
convstB_Set;
delay_ms(1);
STby_Set;
clk_Set;
cs_Set;
OS10_Reset;
OS11_Reset;
OS12_Reset;
AD7606_reset();
delay_ms(1);
AD7606_startconvst();
}
/* * 名称:AD7606_startconvst() * 功能:启动转换 */
void AD7606_startconvst(void)
{
convstA_Reset;
convstB_Reset;
delay_us (1);
convstA_Set;
convstB_Set;
}
/* * 名称:AD7606_reset() * 功能:复位模块 */
void AD7606_reset(void)
{
rst_Reset;
delay_us (1);
rst_Set;
delay_us(1);
rst_Reset;
}
/*
* 名称:AD7606_read_data()
* 功能:读取数据
* 返回值:返回一个结构体指针,该指针为指向结构体数组的首地址
*/
void AD7606_read_data(s16 * DB_data)
{
u8 i,j;
for(i=0;i<8;i++)
{
u16 DB_data1 = 0;
cs_Reset;
delay_us(1);
for(j=0;j<16;j++)
{
clk_Reset;
delay_us(1);
DB_data1 = ((u16)(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0))<< (15-j)) + DB_data1 ;
clk_Set;
delay_us(1);
}
cs_Set;
DB_data[i] = (u16)DB_data1;
}
} |
|