初级会员

- 积分
- 126
- 金钱
- 126
- 注册时间
- 2014-7-28
- 在线时间
- 2 小时
|
5金钱
移植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管脚一直是高电平,不知道什么原因,检查过硬件,供电和晶振都没问题。
|
最佳答案
查看完整内容[请看2#楼]
#define SO ((GPIOB->IDR&(1<<4))?1:0)
改为:
#define SO ((GPIOB->IDR&(1<<8))?1:0)
|