📄 5532ad.c
字号:
/********************************************************************************************************/
/* 名称:SpiIni()*/
/* 功能:初始化SPI0,设置为主机*/
/* 说明:使用11.0592 MHz(Fosc)外接晶振,Fcclk=(Fosc * 4)=44.2368 MHz*/
/* Fpclk=(Fcclk / 4) * 1=11.0592 MHz,设置S0PCCR=6,即SPI时钟=1.8432 MHz(CS5532串行时钟<2 MHz)*/
/* 入口参数:无*/
/* 出口参数:无*/
/* 全局变量:无*/
/* 调用函数:无*/
/********************************************************************************************************/
void SpiIni(void)
{
// S0PCCR=0x06; /*设置SPI0时钟频率=1.8432 MHz*/
S0PCCR=0x20; /*设置SPI0时钟频率=0.6912 MHz*/
S0PCR=0x20; /*设置SPI0接口模式:第一时钟采样、SCK高有效、主模式、MSB在先,不中断*/
}
/********************************************************************************************************/
/* 名称:Spi_lz_SRByte()*/
/* 功能:向SPI0总线发送数据(力值采样CS5532命令字节)、或发送无效字节0x00以便读取A/D值*/
/* 入口参数:data 待发送的数据*/
/* 出口参数:返回值为读取的数据*/
/* 全局变量:无*/
/* 调用函数:无*/
/*******************************************************************************************************/
uint8 Spi_lz_SRByte(uint8 data)
{
uint8 i;
IO0CLR=LZ_SEL; /*片选,采样力值*/
for(i=0;i<8;i++)
{;}
S0PDR=data;
while(0==(S0PSR&0x80)) /*等待SPIF置位,即等待数据发送完毕*/
for(i=0;i<8;i++)
{;}
IO0SET=LZ_SEL;
return(S0PDR);
}
/*******************************************************************************************************
** 名称:Spi_zx_SRByte()
** 功能:向SPI0总线发送数据(纵向引伸计采样CS5532命令字节、或发送的无效字节0x00以便读取A/D值)
** 入口参数:data 待发送的数据
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
uint8 Spi_zx_SRByte(uint8 data)
{
uint8 i;
IO0CLR=ZXYSJ_SEL; /*片选,采样纵向引伸计*/
for(i=0;i<8;i++)
{;}
S0PDR=data;
while(0==(S0PSR&0x80)) /*等待SPIF置位,即等待数据发送完毕*/
for(i=0;i<8;i++)
{;}
IO0SET=ZXYSJ_SEL;
return(S0PDR);
}
/*******************************************************************************************************
** 名称:Spi_hx_SRByte()
** 功能:向SPI1总线发送数据(横向引伸计采样CS5532命令字节、或发送的无效字节0x00以便读取A/D值)
** 入口参数:data 待发送的数据
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
uint8 Spi_hx_SRByte(uint8 data)
{
uint8 i;
IO0CLR=HXYSJ_SEL; /*片选,采样横向引伸计*/
for(i=0;i<8;i++)
{;}
S0PDR=data;
while(0==(S0PSR&0x80)) /*等待SPIF置位,即等待数据发送完毕*/
for(i=0;i<8;i++)
{;}
IO0SET=HXYSJ_SEL;
return(S0PDR);
}
/*******************************************************************************************************
** 名称:Lz_CS5532Reset()
** 功能:复位采样力值的CS5532
** 入口参数:无
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
void Lz_CS5532Reset(void)
{
uint8 i,rd0,rd1;
for(i=0;i<16;i++) /*力值5532初始化序列*/
{
rd0=Spi_lz_SRByte(0xff);
}
rd0=Spi_lz_SRByte(0xfe);
rd0=Spi_lz_SRByte(0x03); /*力值5532系统复位,RS=1,写配置寄存器*/
rd0=Spi_lz_SRByte(0x20);
rd0=Spi_lz_SRByte(0x00);
rd0=Spi_lz_SRByte(0x00);
rd0=Spi_lz_SRByte(0x00);
for(i=0;i<255;i++)
{;}
rd0=0x00; /*等待力值5532系统复位*/
while(0==(rd0&0x10)) /*RV=0?*/
{rd0=Spi_lz_SRByte(0x0b);
rd0=Spi_lz_SRByte(0x00);
rd1=Spi_lz_SRByte(0x00);
rd1=Spi_lz_SRByte(0x00);
rd1=Spi_lz_SRByte(0x00);
}
}
/*******************************************************************************************************
** 名称:Lz_CS5532Ini()
** 功能:初始化采样力值的CS5532,并启动力值连续转换
** 入口参数:无
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
void Lz_CS5532Ini(void)
{
uint8 rd0;
rd0=Spi_lz_SRByte(0x03); /*初始化力值5532配置寄存器*/
rd0=Spi_lz_SRByte(0x00);
rd0=Spi_lz_SRByte(0x40);
rd0=Spi_lz_SRByte(0x00);
rd0=Spi_lz_SRByte(0x00);
// rd0=Spi_lz_SRByte(0x03); /*初始化力值5532配置寄存器:VREF=2.5V*/
// rd0=Spi_lz_SRByte(0x02);
// rd0=Spi_lz_SRByte(0x40);
// rd0=Spi_lz_SRByte(0x00);
// rd0=Spi_lz_SRByte(0x00);
rd0=Spi_lz_SRByte(0x05); /*初始化力值5532通道设置寄存器*/
// rd0=Spi_lz_SRByte(0x34); /*物理通道1、64倍增益、1920Hz字速率*/
// rd0=Spi_lz_SRByte(0xc0); /*单极性模式、物理通道1、64倍增益、1920Hz字速率*/
// rd0=Spi_lz_SRByte(0x34);
// rd0=Spi_lz_SRByte(0xc0); /*单极性模式*/
// rd0=Spi_lz_SRByte(0x34); /*物理通道1、64倍增益、1920Hz字速率*/
// rd0=Spi_lz_SRByte(0x80); /*双极性模式、物理通道1、64倍增益、1920Hz字速率*/
// rd0=Spi_lz_SRByte(0x34);
// rd0=Spi_lz_SRByte(0x80); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x30); /*物理通道1、64倍增益、120Hz字速率*/
// rd0=Spi_lz_SRByte(0x00); /*双极性模式、物理通道1、64倍增益、120Hz字速率*/
// rd0=Spi_lz_SRByte(0x30);
// rd0=Spi_lz_SRByte(0x00); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x30); /*物理通道1、64倍增益、60Hz字速率*/
// rd0=Spi_lz_SRByte(0x80); /*双极性模式、物理通道1、64倍增益、60Hz字速率*/
// rd0=Spi_lz_SRByte(0x30);
// rd0=Spi_lz_SRByte(0x80); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x31); /*物理通道1、64倍增益、30Hz字速率*/
// rd0=Spi_lz_SRByte(0x00); /*双极性模式、物理通道1、64倍增益、30Hz字速率*/
// rd0=Spi_lz_SRByte(0x31);
// rd0=Spi_lz_SRByte(0x00); /*双极性模式*/
rd0=Spi_lz_SRByte(0x31); /*物理通道1、64倍增益、15Hz字速率*/
rd0=Spi_lz_SRByte(0x80); /*双极性模式、物理通道1、64倍增益、15Hz字速率*/
rd0=Spi_lz_SRByte(0x31);
rd0=Spi_lz_SRByte(0x80); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x32); /*物理通道1、64倍增益、7.5Hz字速率*/
// rd0=Spi_lz_SRByte(0x00); /*双极性模式、物理通道1、64倍增益、7.5Hz字速率*/
// rd0=Spi_lz_SRByte(0x32);
// rd0=Spi_lz_SRByte(0x00); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x1a); /*物理通道1、8倍增益、7.5Hz字速率*/
// rd0=Spi_lz_SRByte(0x00); /*双极性模式、物理通道1、8倍增益、7.5Hz字速率*/
// rd0=Spi_lz_SRByte(0x1a);
// rd0=Spi_lz_SRByte(0x00); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x21); /*物理通道1、16倍增益、15Hz字速率*/
// rd0=Spi_lz_SRByte(0x80); /*双极性模式、物理通道1、16倍增益、15Hz字速率*/
// rd0=Spi_lz_SRByte(0x21);
// rd0=Spi_lz_SRByte(0x80); /*双极性模式*/
// rd0=Spi_lz_SRByte(0x22); /*物理通道1、16倍增益、7.5Hz字速率*/
// rd0=Spi_lz_SRByte(0x00); /*双极性模式、物理通道1、16倍增益、7.5Hz字速率*/
// rd0=Spi_lz_SRByte(0x22);
// rd0=Spi_lz_SRByte(0x00); /*双极性模式*/
rd0=Spi_lz_SRByte(0xc0); /*启动力值连续转换*/
}
/*******************************************************************************************************
** 名称:Zx_CS5532Reset()
** 功能:复位采样纵向引伸计的CS5532
** 入口参数:无
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
void Zx_CS5532Reset(void)
{
uint8 i,rd0,rd1;
for(i=0;i<16;i++) /*纵向引伸计5532初始化序列*/
{
rd0=Spi_zx_SRByte(0xff);
}
rd0=Spi_zx_SRByte(0xfe);
rd0=Spi_zx_SRByte(0x03); /*纵向引伸计5532系统复位,RS=1,写配置寄存器*/
rd0=Spi_zx_SRByte(0x20);
rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0x00);
for(i=0;i<255;i++)
{;}
rd0=0x00; /*等待纵向引伸计5532系统复位*/
while(0==(rd0&0x10)) /*RV=0?*/
{rd0=Spi_zx_SRByte(0x0b);
rd0=Spi_zx_SRByte(0x00);
rd1=Spi_zx_SRByte(0x00);
rd1=Spi_zx_SRByte(0x00);
rd1=Spi_zx_SRByte(0x00);
}
}
/*******************************************************************************************************
** 名称:Zx_CS5532Ini()
** 功能:初始化采样纵向引伸计的CS5532,并启动纵向引伸计连续转换
** 入口参数:无
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
void Zx_CS5532Ini(void)
{
uint8 rd0;
rd0=Spi_zx_SRByte(0x03); /*初始化纵向引伸计5532配置寄存器*/
rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0x40);
rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0x00);
// rd0=Spi_zx_SRByte(0x03); /*初始化纵向引伸计5532配置寄存器:VREF=2.5V*/
// rd0=Spi_zx_SRByte(0x02);
// rd0=Spi_zx_SRByte(0x40);
// rd0=Spi_zx_SRByte(0x00);
// rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0x05); /*初始化纵向引伸计5532通道设置寄存器*/
// rd0=Spi_zx_SRByte(0x34); /*物理通道1、64倍增益、1920Hz字速率*/
// rd0=Spi_zx_SRByte(0xc0); /*单极性模式*/
// rd0=Spi_zx_SRByte(0x34);
// rd0=Spi_zx_SRByte(0xc0);
// rd0=Spi_zx_SRByte(0x34); /*物理通道1、64倍增益、1920Hz字速率*/
// rd0=Spi_zx_SRByte(0x80); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x34);
// rd0=Spi_zx_SRByte(0x80);
// rd0=Spi_zx_SRByte(0x30); /*物理通道1、64倍增益、120Hz字速率*/
// rd0=Spi_zx_SRByte(0x00); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x30);
// rd0=Spi_zx_SRByte(0x00);
// rd0=Spi_zx_SRByte(0x30); /*物理通道1、64倍增益、60Hz字速率*/
// rd0=Spi_zx_SRByte(0x80); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x30);
// rd0=Spi_zx_SRByte(0x80);
// rd0=Spi_zx_SRByte(0x31); /*物理通道1、64倍增益、30Hz字速率*/
// rd0=Spi_zx_SRByte(0x00); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x31);
// rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0x31); /*物理通道1、64倍增益、15Hz字速率*/
rd0=Spi_zx_SRByte(0x80); /*双极性模式*/
rd0=Spi_zx_SRByte(0x31);
rd0=Spi_zx_SRByte(0x80);
// rd0=Spi_zx_SRByte(0x32); /*物理通道1、64倍增益、7.5Hz字速率*/
// rd0=Spi_zx_SRByte(0x00); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x32);
// rd0=Spi_zx_SRByte(0x00);
// rd0=Spi_zx_SRByte(0x1a); /*物理通道1、8倍增益、7.5Hz字速率*/
// rd0=Spi_zx_SRByte(0x00); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x1a);
// rd0=Spi_zx_SRByte(0x00);
// rd0=Spi_zx_SRByte(0x21); /*物理通道1、16倍增益、15Hz字速率*/
// rd0=Spi_zx_SRByte(0x80); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x21);
// rd0=Spi_zx_SRByte(0x80);
// rd0=Spi_zx_SRByte(0x22); /*物理通道1、16倍增益、7.5Hz字速率*/
// rd0=Spi_zx_SRByte(0x00); /*双极性模式*/
// rd0=Spi_zx_SRByte(0x22);
// rd0=Spi_zx_SRByte(0x00);
rd0=Spi_zx_SRByte(0xc0); /*启动纵向引伸计连续转换*/
}
/*******************************************************************************************************
** 名称:Hx_CS5532Reset()
** 功能:复位采样横向引伸计的CS5532
** 入口参数:无
** 出口参数:无
** 全局变量:无
** 调用函数:无
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -