您好!
我有一个电路板(我们设计)、它仅使用 SPI 0、上面有4个从器件、并将 AM3358用作单个主器件。 由于 AM3358 (OMAP3)上只有2个芯片选择引脚输出、因此我们需要通过 GPIO 控制芯片选择。 我们在这样做时取得了一些成功,但遇到了一些问题。 请注意、我们使用的是 QNX、但我的问题是有关 AM3358中的寄存器设置(而不是直接使用 QNX 代码)
我的问题是:
1) 1) AM3358 McSPI 在使用 GPIO 控制芯片选择(AM3358不控制芯片选择)时能否与多个从器件(单个主器件)配合使用? 参考手册似乎表明:
"24.3.1.3.2可编程 SPI 使能生成
McSPI 能够生成或不生成 SPI 使能。 如果芯片选择管理取消置位、A
点对点连接是必需的。 只能将从器件的单个主器件连接到
SPI 总线。"
(我在这里假设"芯片选择管理无效"是指设置 MCSPI_MODULCTRL[PIN34]=1 (见下面)。 是这样吗?)
"24.3.2.12 3引脚或4引脚模式
外部 SPI 总线接口可通过位字段配置为使用受限的引脚集
MCSPI_MODULCTRL[PIN34]、根据目标应用:
•如果将 MCSPI_MODULCTRL[PIN34]清零(默认值)、则使用控制器处于4引脚模式
SPI 引脚 SPICLK、SOMI、SIMO 和芯片使能 CS。
•如果 MCSPI_MODULCTRL[PIN34]设置为1、则控制器使用 SPI 引脚 SPICLK 处于3引脚模式、
SOMI 和 SIMO。
在3引脚模式下、必须将控制器置于单通道主模式
(MCSPI_MODULCTRL[单通道]置位)并在总线上仅连接一个 SPI 器件。"
2) 2)我们需要设置哪些寄存器(如果有)来指示我们使用 GPIO 来控制芯片选择(AM3358不控制芯片选择)?
从上面的24.3.2.12节中、我们似乎应该将 MCSPI_MODULCTRL[PIN34]设置为1。 MCSPI_MODULCTRL[单通道]是否应设置为0或1?
3)当使用 GPIO 控制芯片选择(AM3358不控制芯片选择)时、我们是否需要设置/清除 MCSPI_CHxCONF[FORCE]来启动事务? 参考手册似乎 表明我们不需要:
"24.3.2.12 3引脚或4引脚模式
(笑声)
在3引脚模式下、与芯片选择管理相关的所有选项都是无用的:
•MCSPI_CHxCONF[ePOL]
•MCSPI_CHxCONF[TCS0]
•MCSPI_CHxCONF[FORCE]
在此模式下,芯片选择引脚 SPIEN 被强制为‘0’。”
我们根据经验发现、我们确实需要设置/清除 MCSPI_CHxCONF[FORCE](尽管我们认为我们不必这么做)。
下面是我已经完成和发现的一些更多内容(所有这些都是在通过 GPIO 控制芯片选择时):
-当 MCSPI_MODULCTRL[PIN34]=0并且 MCSPI_MODULCTRL[单通道]=1时、McSPI 的所有4个通道在非 DMA 模式下似乎工作正常。 但是、在 DMA 模式下、只有通道1工作。 在除1之外的通道上的 DMA 模式下、我看到芯片选择、但没有时钟。
-如果 MCSPI_MODULCTRL[PIN34]=1且 MCSPI_MODULCTRL[单通道]=1、则所有通道都不起作用。
-如果 MCSPI_MODULCTRL[PIN34]=1并且 MCSPI_MODULCTRL[单通道]=0、通道1适用于 DMA 和非 DMA 模式、但其他通道不工作。 例如、通过查看通道2、对于非 DMA 模式、我看到 MOSI 数据、时钟和芯片选择工作正常、但 MISO 上的数据未正确返回(并且我注意到、在芯片选择无效后、AM3358从不停止输出时钟和数据)。 对于通道2上的 DMA 模式、我只看到切换的芯片选择。
谢谢、
Tim