EFM32 LG232系列单片机干货之SPI 操作外置FLASH芯片

这一篇文章里,我们再来看一下EFM32单片机如何使用SPI接口来操作外置FLASH存储器芯片。SPI总线是一种4线制的总线,传输由收发两条线同时完成。同时,时钟线独立,由主机控制。SPI总线和I2C相比,增加了片选线。再加上收发独立。这使得SPI信号传输速度比I2C快得多,特别适用于频谱数据采集、外置大容量存储器大规模读写等任务。EFM32单片机的SPI总线接口使用了USART接口,但传输时使用的是同步模式(synchronous)。注意USART口里默认的CS信号脚位,这个脚位有一种自动控制模式,也就是说由SPI硬件借口来控制CS线。但在实践中发现这种自动控制模式不算好用,有些芯片反应慢要求片选信号与开始时钟信号之间的时差要比较大。这时自动片选有可能会出现通信失败。所以,也可以不启动自动模式,而是手动控制CS信号。如果这样做的话,那在SPI接口的初始化时就不要初始化CS信号线。而是作为普通GPIO口线进行操作。在下面的SPI初始化代码中我们可以看到。

void setupSPI(void)
{
  /* Enable peripheral clocks */
  CMU_ClockEnable(cmuClock_HFPER, true);
  CMU_ClockEnable(cmuClock_GPIO, true);
  CMU_ClockEnable(cmuClock_USART2, true);
  /* To avoid false start, configure TX pin as initial high */
  GPIO_PinModeSet(gpioPortC,2,gpioModePushPull,1);//TX
  GPIO_PinModeSet(gpioPortC,3,g

你可能感兴趣的:(EFM32 LG232系列单片机干货之SPI 操作外置FLASH芯片)