初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2012-3-28
- 在线时间
- 0 小时
|
发表于 2012-10-24 11:27:28
|
显示全部楼层
你这个是和原子哥的连接是一样的,只不过原子的板子没用NSS作为片选信号,因为上面好几个SPI接口设备
原子哥的GPIO设置是:////这里的设置是把其他SPI 设备的CS信号拉高,防止受其它SPI设备的干扰(PA2是flash的片选,PA3是SD卡的片选,PA4是无线模块的片选)
GPIOA->CRL&=0XFFF000FF;
GPIOA->CRL|=0X00033300;//PA2.3.4 推挽
GPIOA->ODR|=0X7<<2; //PA2.3.4上拉
你可以参考这块代码修改你的程序,把NSS管理处理好就行了,自己改改吧!!!
//以下是SPI模块的初始化代码,配置成主机模式,访问SD Card/W25X16/24L01/JF24C
//SPI口初始化
//这里针是对SPI1的初始化
void SPIx_Init(void)
{
RCC->APB2ENR|=1<<2; //PORTA时钟使能
RCC->APB2ENR|=1<<12; //SPI1时钟使能
//这里只针对SPI口初始化
GPIOA->CRL&=0X000FFFFF;
GPIOA->CRL|=0XBBB00000;//PA5.6.7复用
GPIOA->ODR|=0X7<<5; //PA5.6.7上拉
SPI1->CR1|=0<<10;//全双工模式
SPI1->CR1|=1<<9; //软件nss管理
SPI1->CR1|=1<<8;
SPI1->CR1|=1<<2; //SPI主机
SPI1->CR1|=0<<11;//8bit数据格式
SPI1->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1
SPI1->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1
SPI1->CR1|=7<<3; //Fsck=Fcpu/256
SPI1->CR1|=0<<7; //MSBfirst
SPI1->CR1|=1<<6; //SPI设备使能
SPIx_ReadWriteByte(0xff);//启动传输
}
|
|