2

我有 OMAP-L138 Experimenter Kit,我想与设置在 SPI 1 芯片选择 1 上的外围设备之一进行通信(SPI1 芯片选择 0 上也有闪存)。

我很困惑我应该使用哪些寄存器来选择芯片 1 ?

根据OMAP-L138 Technical Reference Manual,我应该

  • 设置 4 针模式

    spi->SPIPC0 = SOMI | 西莫 | 时钟 | SCS0; //带片选的4针模式

  • 设置 SPIPC0.SCS0FUN 的 1 位以显示 SPI_CS1 - 是 SPI 功能引脚

    SETBIT(spi->SPIPC0, 0x00000002);

  • 设置 SPIDAT1.CSNR 的 17 位(表示 SPI_CS1 引脚被驱动为高电平。)

    SPI->SPIDAT1 = 0;SETBIT(spi->SPIDAT1, 0x20000); //设置第17位(对应SPI_CS1)

  • 将 SIDEF.CSDEF 设置为 1 位(表示 SPI_CS1 引脚被驱动为高电平。)

    spi->SPIDEF = 0;SETBIT(spi->SPIDEF, 0x00000002); //在 CSDEF 字段中设置第 1 位(对应于 SPI_CS1)

  • 最后,在从 SPI1_CS1 设备读取数据之前,我应该将 SPIDAT1.CSHOLD 设置为保持有效的片选信号

    SETBIT(spi->SPIDAT1,0x10000000); //设置代表CSHOLD的第28位

这是正确的还是我错过了什么?可能我还需要对 PINMUX5(引脚复用控制 5 寄存器)做一些事情吗?谢谢!

4

1 回答 1

1

看来我已经想通了。

  • 在寄存器 PINMUX5 中设置第 0 位 - 选择功能 SPI1_SCS[1]
  • 在寄存器 PINMUX5 中设置第 4 位 - 选择功能 SPI1_SCS[0]

    EVMOMAPL138_pinmuxConfig(5, 0x00FFFFF0, 0x00111101); //使能片选1 EVMOMAPL138_pinmuxConfig(5, 0x00FFFFF0, 0x00111110); //启用片选0

于 2013-02-14T12:52:09.623 回答