SD卡有两个可选的通信协议:SD模式和SPI模式。为了电路和程序的简化,选用SPI模式。ZC09的SD与STM32通过SPI1连接。因为STM32内部集成了SPI控制器,所以只需简单的配置,就能实现SPI时序。
一、配置SPI1控制器
1、首先要打开SPI1的时钟,并且要打开SPI1信号线所在GPIO口的时钟。由于SPI1的信号线是在GPIOA上,所以用以下代码打开所需要时钟。这里要注意的是,打开SPI1和GPIOA 最好一起打开,因为本人试过先打开SPI1的时钟,然后再相隔了几行代码后才打开GPIOA的时钟,这样导致SD卡操作失败。
2、将GPIOA的5、6、7脚配置为复用推挽输出、50MHz 。
3、SD卡的使能脚直接连接到STM32的GPIOB的15脚上,所以也想对此脚进行配置。
4、接下来是配置SPI1控制器,根据SD卡的数据手册,配置SPI1控制器的寄存器。
5、配置好后就可以启动SPI1控制器。
二、编写其它SPI驱动
1、由于SD上电后的操作是处于低速模式下的,所以SD卡上电后的操作必需在小于400kHz,因此我们要写一个可以设置SPI速度的接口。
2、SPI读写驱动
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』