在外星人板子上的这个 NRF2401 的IO设置有没错呢,我的代码读出的数全是 8. 我还没学片内的SPI,我是用IO模拟的.你看下我这样设的IO有木有问题.
/初始化24L01的IO口
void NRF24L01_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA口时钟
RCC->APB2ENR|=1<<4; //使能PORTC口时钟
GPIOA->CRL&=0X0000FFFF; //MOSI MISO SCK CE
GPIOA->CRL|=0X38330000;
GPIOA->ODR|=0xf0; //PA4.5.6.7 输出1
GPIOC->CRL&=0XFF00FFFF; //PC4 CSN 输出 PC5 IRQ 输入
GPIOC->CRL|=0X00830000;
GPIOC->ODR|=0x30;//3<<4; //上拉
NRF24L01_CE=0;
NRF24L01_CSN=1; //SPI片选取消
NRF24L01_SCK =0; //时钟置底
}
后来翻看你写的代码
你的这个
//初始化24L01的IO口
void NRF24L01_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA口时钟
RCC->APB2ENR|=1<<4; //使能PORTC口时钟
GPIOA->CRL&=0XFFF000FF;//PA4输出
GPIOA->CRL|=0X00033300;
GPIOA->ODR|=7<<2; //PA2.3.4 输出1
GPIOC->CRL&=0XFF00FFFF;//PC4输出 PC5输出
GPIOC->CRL|=0X00830000;
GPIOC->ODR|=3<<4; //上拉
SPIx_Init(); //初始化SPI
NRF24L01_CE=0; //使能24L01
NRF24L01_CSN=1; //SPI片选取消
}
GPIOA->CRL|=0X00033300;
GPIOA->ODR|=7<<2; //PA2.3.4 输出1 <<====为什么有 PA2.3.4 呢,没用的呀~~~~~看电路图,接的是 PA5.6.7脚才对呀.
搞好二个多小时,读出来的数就是8 ,郁闷死了.
明天得带个逻辑分析仪回来才行...........................
|