|
发表于 2023-11-24 23:35:21
|
显示全部楼层
/***************************************************************************//**
* @file AD7190.c
* @brief Implementation of AD7190 Driver.
* @author none
*******************************************************************************/
/******************************************************************************/
/* Include Files */
/******************************************************************************/
#include "AD7190.h" // AD7190 definitions.
//extern unsigned char Data_Buff[];
unsigned char Data_Buff[5] = {0,0,0,0,0};
/***************************************************************************//**
* @brief Resets the device.
*
* @return none.
*******************************************************************************/
void AD7190_Reset(void)
{
unsigned char registerWord[5]={0xFF,0xFF,0xFF,0xFF,0xFF};
AD7190_Write(5,registerWord);
// HAL_Delay(10); //等待复位完成
}
/***************************************************************************//**
*******************************************************************************/
void SPI_Init(void)
{
MX_SPI2_Init();
}
/*******************************************************************************/
void AD7190_Write(unsigned char count, unsigned char *Data_Buff)
{
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi2,Data_Buff,count,500);
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_SET);
}
/*******************************************************************************/
void AD7190_Read(unsigned char count, unsigned char *Data_Buff)
{
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_RESET);
HAL_SPI_Receive (&hspi2,Data_Buff,count,500);
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_SET);
}
/*******************************************************************************/
void AD7190_Init(void)
{
Data_Buff[0] = 0x10; //配置寄存器
Data_Buff[1] = 0x80; //斩波使能
Data_Buff[2] = 0x03; //使能2个差分通道
Data_Buff[3] = 0x10; //启用输入缓冲/双极性工作模式/增益=1
AD7190_Write(4,Data_Buff);
Data_Buff[0] = 0x08; //模式寄存器
Data_Buff[1] = 0x78; //省电转换模式/使能同时传输状态寄存器/内部时钟
Data_Buff[2] = 0x23; //使能SIN4滤波器/使能奇偶校验/
Data_Buff[3] = 0xFF; //输出速率1023
AD7190_Write(4,Data_Buff);
}
void AD7190_Xway_ReadCongfig(void)
{
Data_Buff[0] = 0x10; //配置寄存器
Data_Buff[1] = 0x80; //斩波使能
Data_Buff[2] = 0x01; //使能X差分通道
Data_Buff[3] = 0x10; //启用输入缓冲/双极性工作模式/增益=1
AD7190_Write(4,Data_Buff);
Data_Buff[0] = 0x08; //模式寄存器
Data_Buff[1] = 0x38; //单次转换模式/使能同时传输状态寄存器/内部时钟
Data_Buff[2] = 0x23; //使能SIN4滤波器/使能奇偶校验/
Data_Buff[3] = 0xFF; //输出速率1023
AD7190_Write(4,Data_Buff);
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_RESET);
}
void AD7190_Yway_ReadCongfig(void)
{
Data_Buff[0] = 0x10; //配置寄存器
Data_Buff[1] = 0x80; //斩波使能
Data_Buff[2] = 0x02; //使能Y差分通道
Data_Buff[3] = 0x10; //启用输入缓冲/双极性工作模式/增益=1
AD7190_Write(4,Data_Buff);
Data_Buff[0] = 0x08; //模式寄存器
Data_Buff[1] = 0x38; //单次转换模式/使能同时传输状态寄存器/内部时钟
Data_Buff[2] = 0x23; //使能SIN4滤波器/使能奇偶校验/
Data_Buff[3] = 0xFF; //输出速率1023
AD7190_Write(4,Data_Buff);
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_RESET);
}
void AD7190_XYway_ReadCongfig(void)
{
Data_Buff[0] = 0x10; //配置寄存器
Data_Buff[1] = 0x80; //斩波使能
Data_Buff[2] = 0x03; //使能X/Y差分通道
Data_Buff[3] = 0x10; //启用输入缓冲/双极性工作模式/增益=1
AD7190_Write(4,Data_Buff);
Data_Buff[0] = 0x08; //模式寄存器
Data_Buff[1] = 0x38; //单次转换模式/使能同时传输状态寄存器/内部时钟
Data_Buff[2] = 0x23; //使能SIN4滤波器/使能奇偶校验/
Data_Buff[3] = 0xFF; //输出速率1023
AD7190_Write(4,Data_Buff);
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_RESET);
}
void AD7190_XYway_series_ReadCongfig(void)
{
Data_Buff[0] = 0x10; //配置寄存器
Data_Buff[1] = 0x80; //斩波使能
Data_Buff[2] = 0x03; //使能X/Y差分通道
Data_Buff[3] = 0x10; //启用输入缓冲/双极性工作模式/增益=1
AD7190_Write(4,Data_Buff);
Data_Buff[0] = 0x08; //模式寄存器
Data_Buff[1] = 0x18; //连续转换模式/使能同时传输状态寄存器/内部时钟
Data_Buff[2] = 0x23; //使能SIN4滤波器/使能奇偶校验/
Data_Buff[3] = 0xFF; //输出速率1023
AD7190_Write(4,Data_Buff);
HAL_GPIO_WritePin(AD_CS_GPIO_Port,AD_CS_Pin,GPIO_PIN_RESET);
}
void AD7190_Read_data(void)
{
Data_Buff[0] = 0x58; //写入0X58表示将要读取数据寄存器+状态信息总计32bit
AD7190_Write(1,Data_Buff);
AD7190_Read(4,Data_Buff); //读取数据寄存器+状态信息总计32bit
}
|
|