管理员
  
- 积分
- 165540
- 金钱
- 165540
- 注册时间
- 2010-12-1
- 在线时间
- 2117 小时
|
发表于 2013-10-9 21:18:49
|
显示全部楼层
CLK为0的时候,是第一个边沿采样才对哦。
一下是我改的代码:
//以下是SPI模块的初始化代码,配置成主机模式,访问SD Card/W25Q64/NRF24L01
//SPI口初始化
//这里针是对SPI2的初始化
void SPI2_Init(void)
{
RCC->APB2ENR|=1<<3; //PORTB时钟使能
RCC->APB1ENR|=1<<14; //SPI2时钟使能
//这里只针对SPI口初始化
GPIOB->CRH&=0X000FFFFF;
GPIOB->CRH|=0XBBB00000; //PB13/14/15复用
GPIOB->ODR|=0X7<<13; //PB13/14/15上拉
SPI2->CR1|=0<<10; //全双工模式
SPI2->CR1|=1<<9; //软件nss管理
SPI2->CR1|=1<<8;
SPI2->CR1|=1<<2; //SPI主机
SPI2->CR1|=0<<11; //8bit数据格式
SPI2->CR1|=0<<1; //空闲模式下SCK为0 CPOL=0
SPI2->CR1|=0<<0; //数据采样从第1个时间边沿开始,CPHA=0
//对SPI2属于APB1的外设.时钟频率最大为36M.
SPI2->CR1|=3<<3; //Fsck=Fpclk1/256
SPI2->CR1|=0<<7; //MSBfirst
SPI2->CR1|=1<<6; //SPI设备使能
SPI2_ReadWriteByte(0xff);//启动传输
}
CLK=0,第1个边沿采样。
如果:
CLK=0,第2个边沿采样,错误。
CLK=1,第1个边沿采样,错误。 |
|