📄 cs5460a.c
字号:
/**********************************************
公司名称:
文 件 名:CS5460A.c
版 本 号:
程序设计:
说 明:
完成日期:
修改日期:
功能摘要:cs5460功能:初始化,读写5460。
***********************************************/
#define _CS5460A
#include "includes.h"
void Initi5460A(void); //初始化5460
void Rest5460A(void); //复位5460
void Sync_5460A(void); //写5460A同步命令
void Clear5460A(void); //清5460A状态寄存器
void Wr_interrupt(void); //写中断屏蔽寄存器
void Wr_configure(void); //写配置寄存器
void Wr5460A(uchar *DP_Buf,uchar Buf_Count); //写5460命令
void Wr_ADByte(uchar temp); //写5460A一个字节
void Rd5460A(uchar *DP_Buf,uchar AD_Comd); //读5460A寄存器
uint8 Rd_ADByte(void); //读5460A一个字节
uchar Rest5460A_Time; //启动AD时,AD屏蔽次数
//-----------------------------------------------------
void Initi5460A(void)
{
Rest5460A_Time = 2;
Sync_5460A();
Wr_interrupt();
Wr_configure();
Clear5460A();
}
//---------------------------------------------
void Rest5460A(void)
{
REST_AD = 0;
_delay_ms(10);
REST_AD = 1;
}
//-------------------------------------------------------
void Sync_5460A(void)
{
uchar AD_Buf[4];
AD_Buf[0] = 0xff;
AD_Buf[1] = 0xff;
AD_Buf[2] = 0xff;
AD_Buf[3] = 0xfe;
CS_AD_A = 0;
CS_AD_B = 0;
Wr5460A(AD_Buf,4);
CS_AD_A = 1;
CS_AD_B = 1;
}
//---------------------------------------------
void Clear5460A(void)
{
uchar AD_Buf[4];
AD_Buf[0] = 0x5e;
AD_Buf[1] = 0xff;
AD_Buf[2] = 0xff;
AD_Buf[3] = 0xff;
CS_AD_A = 0;
Wr5460A(AD_Buf,4);
CS_AD_A = 1;
CS_AD_B = 0;
Wr5460A(AD_Buf,4);
CS_AD_B = 1;
}
//---------------------------------------------
void Wr_interrupt(void)
{
uchar AD_Buf[4];
AD_Buf[0] = 0x74;
AD_Buf[1] = 0x80;
AD_Buf[2] = 0x00;
AD_Buf[3] = 0x00;
CS_AD_A = 0;
CS_AD_B = 0;
Wr5460A(AD_Buf,4);
CS_AD_A = 1;
CS_AD_B = 1;
}
//------------------------------------------------
void Wr_configure(void)
{
uchar AD_Buf[4];
AD_Buf[0] = 0x40;
AD_Buf[1] = 0x04;
AD_Buf[2] = 0x00;
AD_Buf[3] = 0x61;
CS_AD_A = 0;
CS_AD_B = 0;
Wr5460A(AD_Buf,4);
CS_AD_A = 1;
CS_AD_B = 1;
}
//---------------------------------------------------
void Wr5460A(uchar *DP_Buf,uchar Buf_Count)
{
uchar i;
SI_AD = 0;
CLK_AD = 0;
_delay_us(5);
for(i=0;i<Buf_Count;i++)
{
Wr_ADByte(*DP_Buf);
DP_Buf++;
}
}
//---------------------------------------------------
void Wr_ADByte(uchar temp)
{
uchar i;
OS_CLOSE_INT();
for(i=0;i<8;i++)
{
if (temp & 0x80)
{ SI_AD = 1; }
else
{ SI_AD = 0; }
temp <<= 1;
CLK_AD = 1;
_delay_us(5);
CLK_AD = 0;
_delay_us(5);
}
OS_OPEN_INT();
}
//----------------------------------------------------
void Rd5460A(uchar *DP_Buf,uchar AD_Comd)
{
uchar i;
CLK_AD = 0;
_delay_us(5);
Wr_ADByte(AD_Comd);
SI_AD = 1;
for(i=0;i<3;i++,DP_Buf++)
{ *DP_Buf = Rd_ADByte(); }
}
//-----------------------------------------------------
uint8 Rd_ADByte(void)
{
uchar i;
uchar temp = 0;
OS_CLOSE_INT();
for(i=0;i<8;i++)
{
CLK_AD = 1;
_delay_us(5);
temp <<= 1;
if (SO_AD == 1) temp++;
CLK_AD = 0;
_delay_us(5);
}
OS_OPEN_INT();
return (temp);
}
//--------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -