模拟SPI口控制MCP2515,读状态寄存器读不出数据

2019-07-21 06:50发布

移植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管脚一直是高电平,不知道什么原因,检查过硬件,供电和晶振都没问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。