📄 mc33389.h
字号:
#define POWCS PTD_PTD0
unsigned char SPI_data1; //SPI返回数据
unsigned char dog_count=0;
unsigned char RD33389(unsigned char addss, unsigned char datas)
{
unsigned char status; //定义返回的命令状态字
POWCS=0; // 使能 SPI
SPDR = addss; // 发送第一个字节
while((SPSCR&0x80)==0); // 等待接收寄存器满
status = SPDR; // 读取 MSB状态
SPDR = datas; // 发送第二个字节
while((SPSCR&0x80)==0); // 等待接收寄存器满
status = SPDR; // 读取 LSB状态
POWCS=1; // SPI 关闭
return(status);
}
//******************************************
//*******************************************************************************************
void Init_MC33389(void){
SPI_data1=RD33389(0x27,0xC7);//dog 200ms
//冷启动必读
//SPI_data1=RD33389(0x30,0x0); //读唤醒输入控制寄存器WUICR
//SPI_data1=RD33389(0x60,0x0); //读复位源寄存器RSR
//SPI_data1=RD33389(0x6C,0x0); //读电压补给状态寄存器VSSR
//唤醒后必读
SPI_data1=RD33389(0x30,0x0); //读唤醒输入控制寄存器WUICR
SPI_data1=RD33389(0x3c,0x0); //读唤醒输入状态寄存器WUISR
SPI_data1=RD33389(0x60,0x0); //读复位源寄存器RSR
SPI_data1=RD33389(0x6C,0x0); //读电压补给状态寄存器VSSR
//******************************************************
SPI_data1=RD33389(0x28,0x0); //基础电平寄存器
SPI_data1=RD33389(0x44,0x0); //读唤醒输入适时信息
SPI_data1=RD33389(0x50,0x0); //读CANH错误
SPI_data1=RD33389(0x5C,0x0); //读CANL错误
SPI_data1=RD33389(0x28,0x0); //基础电平寄存器
//
SPI_data1=RD33389(0x03,0x91);//标准模式
SPI_data1=RD33389(0x90,0x91);//标准模式
//
SPI_data1=RD33389(0x17,0x91);//V3ON
//SPI_data1=RD33389(0x33,0x32); //唤醒输入控制寄存器
//
SPI_data1=RD33389(0x2B,0x00);//0。7V
//SPI_data1=RD33389(0x2B,0x91);//-1.2V
//SPI_data1=RD33389(0x2B,0x32);//-1.7V
//SPI_data1=RD33389(0x2B,0xA3);//-2.2V
//CAN设置
SPI_data1=RD33389(0x93,0xA3);//RX/TX
//SPI_data1=RD33389(0x93,0x32);//RX
//SPI_data1=RD33389(0x93,0x00);//VBAT
//SPI_data1=RD33389(0x3C,0x0); //唤醒输入状态寄存器
//SPI_data1=RD33389(0x90,0x0); //传送控制寄存器
}
//*******************************************************************************************
void Dog_MC33389(void)
{
POWCS=0;
SPI_data1=RD33389(0x27,0xC7);//喂狗
POWCS=1;
}
//**************************************
void SLEEP1(void){
delay5ms(1);
//SPI_data1=RD33389(0x17,0x00);//lx唤醒
SPI_data1=RD33389(0x17,0x64);//强迫唤醒
//SPI_data1=RD33389(0x17,0x00);//循环lx唤醒
SPI_data1=RD33389(0x1b,0xf5);//时间
//SPI_data1=RD33389(0x33,0x32);//lx负沿属性
//SPI_data1=RD33389(0x33,0x91);//lx正沿属性
//SPI_data1=RD33389(0x33,0xa3);//lx正负沿属性
SPI_data1=RD33389(0x03,0x64);
SPI_data1=RD33389(0x0f,0x64);
}
void Sleep_33389(void)
{
// delay5ms(1);
SPI_data1=RD33389(0x17,0x00);//lx唤醒
//SPI_data1=RD33389(0x17,0x64);//强迫唤醒
//SPI_data1=RD33389(0x17,0x00);//循环lx唤醒
//SPI_data1=RD33389(0x1b,0xf5);//时间
//SPI_data1=RD33389(0x33,0x32);//lx负沿属性
//SPI_data1=RD33389(0x33,0x91);//lx正沿属性
SPI_data1=RD33389(0x33,0xa3);//lx正负沿属性
SPI_data1=RD33389(0x03,0x64);
SPI_data1=RD33389(0x0f,0x64);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -