模拟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管脚一直是高电平,不知道什么原因,检查过硬件,供电和晶振都没问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-21 11:19
#define SO      ((GPIOB->IDR&(1<<4))?1:0)
改为:
#define SO      ((GPIOB->IDR&(1<<8))?1:0)
北冥鱼
2楼-- · 2019-07-21 12:22
 精彩回答 2  元偷偷看……
北冥鱼
3楼-- · 2019-07-21 12:25
原子哥,您给看看有没有问题
小麻8
4楼-- · 2019-07-21 17:07
你好,我最近也在做mcp2515的can通信,你能帮我看一下程序哪里错了吗?
goodzero0409
5楼-- · 2019-07-21 18:13
回复【4楼】北冥鱼:
---------------------------------
是什么原因引起的,能分享下吗?
北冥鱼
6楼-- · 2019-07-21 18:40
硬件电路问题,时钟问题

一周热门 更多>