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.
大家好、我将 TMS320F28035 SPI 设置为从器件。 它部分工作。 它检测 CLK、它计数16位并输出信息。 主器件正确接收。
但它始终在 SIMO 引脚(GPIO24)上读取0xFFFF。 即使我在它上归零也是如此。 我尝试了所有我想到的东西。 没有用处。
问题是什么?
以下是我的设置:
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; //启用 GPIO24上的上拉电阻(SPISIMOB) //此引脚始终接收0xFFFF
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; //启用 GPIO13上的上拉电阻器(SPISOMIB)
GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; //启用 GPIO14上的上拉电阻(SPICLKB)
GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; //启用 GPIO15上的上拉电阻器(SPISTEB)
GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 3; //异步输入 GPIO24 (SPISIMOB) //此引脚接收0xFFFF
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; //异步输入 GPIO13 (SPISOMIB)
GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3; //异步输入 GPIO14 (SPICLKB)
GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; //异步输入 GPIO15 (SPISTEB)
GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 3; //将 GPIO24配置为 SPISIMOB //此引脚接收0xFFFF
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3; //将 GPIO13配置为 SPISOMIB
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3; //将 GPIO14配置为 SPICLKB
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 3; //将 GPIO15配置为 SPISTEB
EDIS;
SpibRegs.SPICCR.bit.SPISWRESET=0;//复位 SPI
SpibRegs.SPICCR.All=0x000F; //16位字符
SpibRegs.SPICTL.All=0x0003; //中断被启用、从器件、 主器件/从器件 Xmit 被启用
SpibRegs.SPISTS.All=0x0000;
// SpibRegs.SPIBRR=0x0063; //波特率
SpibRegs.SPIPRI.All=0x0010;
SpibRegs.SPICCR.bit.CLKPOLARITY = 0; //1;//0;//1;//0
SpibRegs.SPICTL.bit.CLK_PHASE_=0; //1; //1;//0;//0
SpibRegs.SPICCR.bit.SPISWRESET=1; //启用 SPI
谢谢、Mark。 这是 方案的一部分。 SPISIMO-B (GPIO24 pin80)存在问题 SPIB 的所有其他引脚工作正常、SPIB 接收所有时钟并发回数据( 28034作为从器件工作)、ESP8266接收数据正确。 但我始终在 SPIBRXBUF=0xFFFF 上(尽管 ESP8266 仅发送零、我在示波器上检查过)。 我不使用 FIFO 、因为在前一条消息中已注意到这一点。 28034的封装为 PN (这些引脚上的 SPIB 允许)。 当我将 GPIO24用作简单输入引脚时,它工作正常,读取1和0。 上拉,下拉无关紧要。 它的工作原理是简单的输入。 我认为在秘密 环境中有一些不好的事情,我不介意这是什么秘密。
Michael、
我有一个电路板、并使用您的 SPIB 和 GPIO 配置测试了 SPIA 和 SPIB 之间的一些简单代码。 SPIB 能够按预期接收数据。
如果可能、请在您的电路板或其他开发板上尝试使用随附的代码。 使用此代码、您可以确认 SPISIMOB 能够接收数据。 您已声明您已确认 ESP 正在正确传输数据。 因此、您的板上可能还有其他东西在运行。 您能确认迹线中没有断点吗?
这是文件。
/cfs-file/__key/communityserver-discussions-components-files/171/spisimob_5F00_pin80_5F00_e2e.c
如果您仍然无法解决问题、请尝试这些操作并告知我。
谢谢、
标记
您好、Mark。 感谢您的困扰。 但事实证明、问题 非常原始。 我在这个论坛上找到了一些提示。 事实是、我将 TI 的样片项目作为基础(我猜还有其他人)。 当设计发生一些变化时、检查 GPIO 的所有设置链非常重要。 我没有这么做。 我根据 新设计更改了 SIMOB 的位置、但没有查看 TI 基本设计的旧设置。 结果发现、一个 SPI 通道中的两个 GPIO 被设置为 SIMOB、因此 在通信期间提供的值全部为"1"。 在我将一个 GPIO 设置为 SIMOB 之后-程序开始正常工作。 我唯一的过错 是,我很抱歉,目前没有公布这一决定。 问题已解决。 感谢你的帮助。
Michael、
很高兴听到您解决了这个问题。 我以前也经历过同样的事情、所以我绝对理解! 如果您有任何疑问、请随时发帖。
-Mark