资源简介
CS5532读写程序,STM32控制,实测可行
代码片段和文件信息
/**
******************************************************************************
* @file bsp_cs5532_spi.c
* @author zp
* @version V1.0
* @date 2014-xx-xx
* @brief cs5532 底层应用函数bsp
******************************************************************************
* @attention
*
* 平台: 高铁建钢筋仪
*
*
******************************************************************************
*/
#include “bsp_cs5532_IO.h“
/* Private typedef -----------------------------------------------------------*/
#define Dummy_Byte 0xFF
/**
* @brief CS5532 端口配置
* @param 无
* @retval 无
*/
void CS5532_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; /*定义一个GPIO_InitTypeDef类型的结构体*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | CS5532_GPIO_CLK ENABLE); /*开启GPIOB的外设时钟,复用了JTAG口*/
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ENABLE); //禁用JTAG,可以使用SW
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Pin = CS5532_CS_PIN | CS5532_SCLK_PIN | CS5532_SDI_PIN;
GPIO_Init(CS5532_GPIO_PORT &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStructure.GPIO_Pin = CS5532_SDO_PIN;
GPIO_Init(CS5532_GPIO_PORT &GPIO_InitStructure);
CS5532_CS_HIGH(); //端口全部置高
CS5532_SCLK_HIGH();
CS5532_SDI_HIGH();
CS5532_SDO_HIGH();
}
/**
* @brief CS5532 简单的延时函数
* @param __IO uint32_t nCount
* @retval 无
*/
static void CS5532_Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
/**
* @brief CS5532 发送单个字节
* @param unsigned char byte
* @retval 无
*/
void CS5532_SendByte(unsigned char byte)
{
unsigned char i;
CS5532_SCLK_LOW();
CS5532_CS_LOW();
for(i = 0;i < 10;i ++) //延时50ns
__nop();
for(i = 0;i < 8;i ++)
{
if((byte << i) & 0x80)
CS5532_SDI_HIGH();
else
CS5532_SDI_LOW();
__nop();__nop(); //延时50ns
CS5532_SCLK_HIGH();
__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();//延时 > 250ns
CS5532_SCLK_LOW();
}
CS5532_SDI_HIGH();
}
/**
* @brief CS5532 发送配置命令及配置数据
* @param command 8bit命令, reg: 32bit配置信息
* @retval 无
*/
void CS5532_Send_REG(u8 commandu32 reg)
{
unsigned char ik;
CS5532_SCLK_LOW();
CS5532_CS_LOW();
for(k = 0;k < 3;k ++) //延时50ns
__nop();
for(i = 0;i < 8;i ++) //先发送命令
{
if((command << i) & 0x80)
CS5532_SDI_HIGH();
else
CS5532_SDI_LOW();
CS5532_SCLK_HIGH();
__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();//延时 > 250ns
CS5532_SCLK_LOW();
}
for(i = 0;i < 32;i ++) //发送32位寄存器
{
i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4810 2014-08-12 13:02 CS5532IO\bsp_cs5532_IO.h
文件 7271 2014-08-29 14:31 CS5532IO\bsp_cs5532_IO.c
目录 0 2014-06-04 20:56 CS5532IO
----------- --------- ---------- ----- ----
12081 3
评论
共有 条评论