移植51的MCP2515的程序,用SPI控制,结果在复位后读取芯片的工作模式寄存器一直是0xff。
初始化管脚:
#define SCK_H GPIOB->ODR|=1<<3;
#define SCK_L GPIOB->ODR&=~(1<<3);
#define CS_H GPIOA->ODR|=1<<15;
#define CS_L GPIOA->ODR&=~(1<<15);
#define SI_H GPIOB->ODR|=(1<<5);
#define SI_L GPIOB->ODR&=~(1<<5);
#define SO ((GPIOB->IDR&(1<<4))?1:0)
RCC->APB2ENR|=3<<2;
GPIOA->CRH &=0X0FFFFFFF; //  
A15~CS
GPIOA->CRH |=0X3FFFFFFF; //
GPIOB->CRL &=0XFF000FFF; //PB3~SCLK PB4~MISO PB5 MOSI
GPIOB->CRL |=0X00383000;
GPIOB->CRH &=0XFFFFFFF0; // PB8~INT
GPIOB->CRH |=0X00000008;
用示波器看管脚模拟SPI没什么问题,看MISO管脚一直是高电平,不知道什么原因,检查过硬件,供电和晶振都没问题。
一周热门 更多>