我应该使用哪些OMAP-L138寄存器来选择另一个SPI芯片?

时间:2013-02-14 09:46:24

标签: spi omap

我有OMAP-L138实验套件,我想与SPI 1芯片选择1上设置的一个外围设备进行通信(SPI1芯片上还有闪存选择0)。

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

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

  • 设置4针模式

    spi-> SPIPC0 = SOMI | SIMO | CLK | SCS0; //带芯片选择的4引脚模式

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

    SETBIT(spi-> SPIPC0,0x00000002);

  • 设置SPIDAT1.CSNR的17位(这意味着SPI_CS1引脚被驱动为高电平。)

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

  • 设置1位SPIDEF.CSDEF(这意味着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寄存器)做些什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

似乎我已经弄明白了。

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

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