工具与软件:
您好!
我有一个可直接对硬件进行编程的裸机应用、其中我要使用 SPI1作为仅接收从器件、使用 SPI1_CS0进行芯片选择、使用 SPI1_D1接收数据、使用 SPI1_SCLK 接收来自主器件的时钟。 来自主器件的硬件信号看起来正常、但我没有收到任何信号。 这是我目前在代码中执行的操作:
- 唤醒并配置模块的时钟(我假设此部件工作正常、因为 SPI0能够正常发送数据)
- 数据和时钟线路的引脚多路复用:为焊盘 McASP0_AXR0和 McASP0_ACLK 设置模式3
- CS 线路的引脚多路复用:为焊盘 MCASP0_AHCLKR 设置模式3
- 注册 SPI-1-interrupt 125的中断服务例程并将优先级设置为10
- 启用 SPI-1-中断
- 设置 MODULCTRL 寄存器中的 MS 位来启用从模式
- 设置 CH0CONF 寄存器中的 RXONLY 位(0x1000)以启用仅 Rx 模式
- 将 CH0CONF-register 中的 DPE0和 DPE1位置1、以开启发送
- 设置为 CH0CONF-register 中的位、以选择数据线1来接收数据
- 设置 CH0CTRL 寄存器中的 EN 位以启用通道0
- 将 CH0CONF 寄存器中的 SPIENSLV 位设置为0来选择 CS0进行从器件选择
- 在 CH0CONF-register 中将字长设置为8、将极性设置为低电平(与 SPI0相同、因此应正确)
- 通过设置 CH0CONF-register 中的位 FFER 来启用 RX-FIFO
- 通过设置 IRQENABLE 寄存器中的 RX0_FULL_ENABLE 位来启用 TX 完整中断
- 通过设置 CH0CTRL 寄存器中的 EN 位来启用通道0
尽管如此、也不会发生中断、也不会通过检查 CH0STAT 寄存器中的 RXFFE 位看到任何接收到的数据、Rx FIFO 始终显示为空。
所以...这里可能会遗漏什么? 有什么想法我做错了什么?
谢谢!