/* Includes ------------------------------------------------------*/
#include "AS5134_drv.h"
/* Private define ------------------------------------------------*/
#define AS5134_CS_HIGH GPIO_SetBits(AS5134_CS_PORT,AS5134_CS_PIN);
#define AS5134_CS_LOW GPIO_ResetBits(AS5134_CS_PORT,AS5134_CS_PIN);
#define AS5134_CLK_HIGH GPIO_SetBits(AS5134_CLK_PORT,AS5134_CLK_PIN);
#define AS5134_CLK_LOW GPIO_ResetBits(AS5134_CLK_PORT,AS5134_CLK_PIN);
/* Private typedef -----------------------------------------------*/
typedef union
{
uint32_t SourceData;/*原始数据*/
uint16_t RetainData;/*保留有用数据*/
}UN_AS5134_DATA;
/* Private constants ---------------------------------------------*/
/* Private variables ---------------------------------------------*/
/* Private function prototypes -----------------------------------*/
/* Public constants ----------------------------------------------*/
/* Public variables ----------------------------------------------*/
ST_AS5134_DATA g_stAS5134Data = {0,0,0,0,0,0,0,1};
/********************************************************************
* name : GetAS5134DIOState
* description : 获取gpio端口状态
* Input : 无
* Output : 无
* Return : 无
********************************************************************/
static uint8_t GetAS5134DIOState(void)
{
uint8_t Bitstatus = 0x00;
Bitstatus = GPIO_ReadInputDataBit(AS5134_DIO_PORT,AS5134_DIO_PIN);
return Bitstatus;
}
/********************************************************************
* name : ReadAS5134Data
* description : read AS5134 data
* Input : 无
* Output : 无
* Return : unAS5134Data.RetainData
********************************************************************/
static uint16_t ReadAS5134Data(void)
{
/*读取的角度信息数据为21位*/
uint16_t i = 21;
UN_AS5134_DATA unAS5134Data ={0};
AS5134_CLK_LOW;
AS5134_CS_HIGH;
Delayus(1);
while(i--)
{
AS5134_CLK_HIGH;
Delayus(1);
unAS5134Data.SourceData = unAS5134Data.SourceData << 1;
if(GetAS5134DIOState())
{
unAS5134Data.SourceData |= 0x01;
}
AS5134_CLK_LOW;
Delayus(1);
}
AS5134_CS_LOW;
AS5134_CLK_LOW;
return(unAS5134Data.RetainData);
}
/********************************************************************
* name : ParseAS5134Data
* description : 获取AS5134的值,判断角度信息有无错误
* Input : 无
* Output : 无
* Return : 返回经过处理之后的角度值
********************************************************************/
ST_AS5134_DATA ParseAS5134Data(void)
{
uint16_t AS5134DataTemp = 0;
AS5134DataTemp = ReadAS5134Data();
g_stAS5134Data.LockFlag = AS5134DataTemp >> 15;/*提取锁定状态*/
g_stAS5134Data.AGCData = (AS5134DataTemp >> 9) & 0x3F;/*提取磁场强度信息*/
g_stAS5134Data.AngleTemp = AS5134DataTemp & 0x01FF;/*提取角度数据*/
if(g_stAS5134Data.LockFlag)/*ADC锁定,数据有效*/
{
if(g_stAS5134Data.AGCData > 0x3F)
{
/*AGC数据没在合适的范围内,即磁场强度较低,角度精度较低*/
g_stAS5134Data.AngleTemp |= D_AS5134_AGCERROR_FLAG;
}
}
else/*ADC解锁,数据无效*/
{
g_stAS5134Data.AngleTemp |= D_AS5134_LOCK_BIT;
}
return g_stAS5134Data;
}
/********************************************************************
* name : AS5134GPIOInit
* description : AS5134硬件初始化
* Input : 无
* Output : 无
* Return : 无
********************************************************************/
void AS5134GPIOInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(AS5134_CLK_CLK , ENABLE);
GPIO_InitStructure.GPIO_Pin = AS5134_CLK_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(AS5134_CLK_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = AS5134_DIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(AS5134_DIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = AS5134_CS_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(AS5134_CS_PORT, &GPIO_InitStructure);
}
/*************************** END OF FILE ***************************/
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
AS5134驱动代码.7z (2个子文件)
AS5134驱动代码
AS5134_drv.h 2KB
AS5134_drv.c 4KB
共 2 条
- 1
xiaoshuidi1016
- 粉丝: 7
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0