This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
大家好
我想使用 MSP432P401R 通过单独的芯片选择引脚在一条 SPI 总线上控制两个 SPI 从器件(我的432上的其他 SPI 总线被占用)。
问题
在将调试代码从 LaunchPad 部署 到最终目标(PCB 上的 MSP432)时、我可以轻松控制这两个器件。
但是、当我停止在 CCS 中进行调试时、重新启动目标 MSP432和我的 PCB、只有一个 SPI 从器件工作。
故障排除步骤
首先、我想知道故障从设备在复位后是否需要很长时间、我在调用故障从设备之前添加了一些延迟、我的问题仍然存在。
2.交换 SPI 呼叫顺序;问题仍然存在。
3.我想知道代码烧录过程是否成功完成;而 PCB 上由432控制的所有其他器件都可以正常工作。
我的代码的一部分
const eUSCI_SPI_MasterConfig spiMasterConfigADF4351 = { EUSCI_A_SPI_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源 3000000、 // SMCLK = DCO = 3MHz 50万、 // SPICLK = 500kHz EUSCI_A_SPI_MSB_FIRST、 // MSB 优先 EUSCI_A_SPI_PHASE_DATA_Captured_ONFIRST_changed_on_next、 当未为 ADF4351启用 SPI 时、EUSCI_A_SPI_CLOCKPOLARITY_INACTION_LOW、// CLK 低电平 EUSCI_A_SPI_3引脚 // 3线 SPI 模式 }; const eUSCI_SPI_MasterConfig spiMasterConfigAD8366 = { EUSCI_A_SPI_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源 3000000、 // SMCLK = DCO = 3MHz 50万、 // SPICLK = 500kHz EUSCI_A_SPI_MSB_FIRST、 // MSB 优先 EUSCI_A_SPI_PHASE_DATA_Changed_ONFIRST_captured_on_next、//相位 ///EUSCI_A_SPI_PHASE_DATA_Captured_ONFIRST_changed_on_next、 EUSCI_A_SPI_CLOCKPOLARITY_INACT_LOW、//高极性 EUSCI_A_SPI_3引脚 // 3线 SPI 模式 }; //典型的3引脚 SPI 初始化 GPIO_setAssiPeripheralModuleFunctionInputPin (ADF4351_SPIPort、ADF4351_SPICLK | ADF4351_SPISIMO | ADF4351_SPISOMI、GPIO_primary_module_function); SPI_MasterMaster (ADF4351_SPICLIM );ADF4351_SPI_initConfigModule (AD4351;ADF4351 SPI (AD4351);AD4351 SPI (AD4351 SPI GPIO_setAsOutputPin (ADF4351_CSPort、ADF4351_CSPin); //将芯片选择设置为高电平作为默认值 GPIO_setOutputHighOnPin (ADF4351_CSPort、ADF4351_CSPin); GPIO_setAsOutputPin (AD8366_CSPort、AD8351_SPIN );AD4335_AD431_ADCSPIN 初始化 ADF4351_CSPort、ADF4351_CSPin); SPI_DisableModule (ADF4351_SPI); //重新配置 SPI、因为两个器件的 SPI 主配置不同 :GPIO_setAssetInitFunctionInputPin (AD8366_SPIPort、AD8366_SPICLK | AD8366_SPI_SPI 主要功能;AD8366 SPI 主要功能;AD8366 SPI AD8366_SET_GAIN (4500、4500、AD8366_SPI、AD8366_CSPort、AD8366_CSPIN);
电源
软件平台 CCS 8.3.0.0009
硬件:MSP432P401R LaunchPad -> JATG -> 目标 MSP432P401R
您能看到有无调试器的实际 SPI 波形有何差异吗?
您使用的实际 SPI 端口是什么? AD8366 SPI?
谢谢、
Chris
您好 Chris
是的。 我确实使用示波器检查了 SPI 波形、无论是否使用 Launchpad。
SPI 波形正确。 现在、我怀疑硬件可能有问题。
如果您有任何想法、请与我分享您的见解。
BTW、我使用的 SPI 端口为 UCA2 (P3.1/3.2/3.3)
谢谢你
文森特
> GPIO_setAsOutputPin (AD8366_CSPort、AD8366_CSPin);
I don't see where you set the AD8366 CS pin initially low (inactive). The contents of the OUT register are undefined after Reset.
----------
当调试器中的某个操作成功但并非没有成功时、(第一个)通常的可疑操作是计时。 在调用 disableModule 之前、是否确保事务已完成(UCBUSY=0)?
你好 Bruce
>> I don't see where you set the AD8366 CS pin initially low (inactive). The contents of the OUT register are undefined after Reset.
感谢您的指出。 我为 AD8366 CS 引脚设置了默认值、但问题仍然存在。
此致
文森特
你好 Bruce
>> I don't see where you set the AD8366 CS pin initially low (inactive). The contents of the OUT register are undefined after Reset.
感谢您的指出。 我为 AD8366 CS 引脚设置了默认值、但问题仍然存在。
此致
文森特
请注意芯片选择的激活和停用方式与 SPI 通信相关。 如果在发送最后一个字节后将其设置为低电平、则可能在传输实际最后一个字节之前取消选择 CS。 TX IFG 表示 TX 缓冲区为空、而不是字节已被发送。 使用接收 IFG 来确定最后一个字节的实际发送时间。
此致、
Chris
您好 Chris
感谢您的解释。 我的问题是由于 PCB 设计电源电路。 重新启动时、其电源序列会导致一些意外的长延迟、导致某些芯片在 MCU 启用之前未准备就绪。
我在代码中添加了一些延迟作为权变措施。