x5045_spi.c
来自「最近一个项目要用到C8051F340与x5045通信」· C语言 代码 · 共 96 行
C
96 行
void Port_IO_Init()
{
P0MDOUT = 0x10;
P1MDOUT = 0x90;//0x8F;
P2MDOUT = 0x28;
P3MDOUT = 0x0F;
P0SKIP = 0xCF;
P1SKIP = 0xB8;//0xBF;
P2SKIP = 0x07;
P3SKIP = 0x0F;
XBR0 = 0x03;
XBR1 = 0xC1;
XBR2 = 0x01;
void SPI_Init()
{
SPI0CFG = 0x60; // Master Mode/ SCK is low in Idle/ Data on 2rd Edge of SCK
SPI0CN = 0x01; // Enable SPIO/3Wire
SPI0CKR = 0x6d;// 45k // 0x6D; // SPI CLOCK: 100KHz
}
void SPI_SendByte(uint8 dat)
{
SPIF = 0;
SPI0DAT = dat;
while(SPIF == 0);
}
uint8 SPI_GetByte(void)
{
SPIF=0;
SPI0DAT=0x00; // 随便发送一个数据以产生读时钟
while(!SPIF);
return SPI0DAT ;
}
uint8 X5045_Read_Reg()
{
uint8 idata u8_Data;
X5045_CS = 0;
nop();
SPI_SendByte(RDSR); // 发送读寄存器指令
u8_Data = SPI_GetByte();
X5045_CS = 1;
nop();
return u8_Data;
}
unsigned char X5045_WaitFree()
{
unsigned char idata i;
for(i=0;i<255;i++)
{
CLEAR_WD;
if((X5045_Read_Reg()&0x01)==0)
return 1;
}
return 0;
}
uint8 X5045_Write_Reg(uint8 u8_RegData)
{
X5045_WaitFree(); // 等待写完毕
X5045_WREN();//写使能
X5045_CS = 0;
nop();
SPI_SendByte(WRSR); // 发送写寄存器指令
SPI_SendByte(u8_RegData); // 发送寄存器的设置值
X5045_CS = 1;
nop();
X5045_WaitFree(); ://等待写完成
X5045_WRDI();// 关闭写使能
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?