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.

[参考译文] LAUNCHXL-F28379D:SCI 循环错误

Guru**** 2589265 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/819664/launchxl-f28379d-sci-looping-errors

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:C2000WARE

我有 SCI-B 设置来发送和接收 FIFO 我使用 SCIA 和 C 成功、但 B 不会从 RXBUF 写入 TXBUF。  我有这些引脚多路复用器和 GMUX、并使用跳线将这些端口连接在一起:

EALLOW;

GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;
   GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2;
   GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0;
   GpioCtrlRegs.GPAGMUX2.bit.GPIO19 = 0;

EDIS;

txbuf 可以写入、但 RXBUF 无法接收该结果、并且停留在初始化时分配的值上(76)这些是我的设置配置

FIFO  

void scib_fifo_init()
{  //初始化 TX 和 RX 的先进先出缓冲器
   SCIFFTX.ALL = 0xE040;
   /*位15=1: SCI FIFO 可恢复发送或接收。 SCIRST 应为1、即使自动波特率逻辑正常工作也是如此。
   位14 = 1:启用 SCI FIFO 增强功能
   位13 = 1: 重新使能发送 FIFO 操作
   位12-8 = 0:FIFO 为空
   位7 = 0:TXFIFO 中断没有发生、只读位
   位6 = 1: 写入0对 TXFIFINT 标志位无影响、位回读0
   位5 = 0:基于 TXFFIL 匹配(小于或等于)的 TX FIFO 中断被禁用
   位4-0 = 0:TXFFIL N/A
   *
   ScibRegs.SCIFFRX.ALL = 0x2044;
   /*位15=0:   接收 FIFO 没有溢出、只读位
   位14 = 0:写入0对 RXFFOVF 标志位无影响、位回读0
   位13 = 1:  重新启用接收 FIFO 操作
   位12-8 = 0:FIFO 为空
   位7 = 0:未发生 RXFIFO 中断、只读位
   位6 = 1:  写入1以清除位7中的 RXFFINT 标志
   位5 = 0: 基于 RXFFIL 匹配(大于或等于)的 RX FIFO 中断将被禁用
   位4-0 = 0:RXFFIL N/A
   *
   ScibRegs.SCIFFCT.all = 0x0;
   /*bit 15 = 0:自动波特率检测没有完成。 "A"、"A"字符未成功接收。
   位14 = 0: 写入0对 ABD 标志位没有影响。 位读回0。
   位13 = 0:  禁用自动波特对齐
   位12-8 = 0:保留
   位7-0 = 0:FFTXDLY 复位在 RX 和 TX FIFO 上的字符检测之间设置暂停0->0波特延迟
   *
   }

初始化

void scib_init ()//如果看不了 TI C2000ware 中的示例代码,则用于 USB 传输

  // 1停止位, 无回送,无奇偶校验,8个字符位,异步模式,
  //空闲线协议
  ScibRegs.SCICCR.all =0x0007;
  //为 SCI 通信将字符长度设置为8位
  //启用 TX、RX、内部 SCICLK、禁用 RX ERR、睡眠、 TXWAKE
  ScibRegs.SCICTL1.all =0x0003;
  //位0 = 1:发送接收到的字符到 SCIRXEMU 和 SCIRXBUF
  //位1 = 1:发送器被启用
  ScibRegs.SCICTL2.bit.TXINTENA=1;
  //TXINTENA 启用 TX 中断并与 CCTL2位0相关联
  ScibRegs.SCICTL2.bit.RXBKINTENA=1;
  //RXBKINTENA 启用 RX 中断并与 CCTL2位1相关联
  //设置波特9600
  ScibRegs.SCIHBAUD.ALL = 0x0002;
  ScibRegs.SCILBAUD.ALL = 0x008B;
  ScibRegs.SCICTL1.all =0x0023;
  //从复位中撤回 SCI
   返回;
相同的初始化方法只是更改引用的 Scix reg 是否有任何原因不适用于 SCI B、而适用于 C 和 A?  或者、我是否在任何设置中错过了什么
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christian:

    是的、将 SciX 替换为 SciY 的相同代码通常应该起作用、但您还需要仔细检查 GPIO 连接、GPIO 多路复用、PIE 和 ISR 配置以及外设时钟启用、 这些配置不是在 SCI 模块中配置的、而是通过各种其他配置在外部配置、这些配置将需要特定相关模块的独特配置。

    例如、要验证 GPIO 连接、可以通过多路复用器将 GPIO 设置为 GPIO、然后在输出模式下将 GPIO 设置为 GPIO、在输入模式下将 GPIO 设置为 GPIO、然后切换输出并验证其是否显示在输入的数据寄存器中。  然后、您可以切换方向并再次验证。  如果需要、所有这些操作都可以在表达式窗口中完成、而无需编写其他代码。

    要验证 GPIO 多路复用、请查阅数据表以确保特定的 SCI 模块位于这些引脚上、并且多路复用器设置正确、 然后运行初始化代码、然后在"Expressions"窗口中验证设置是否已将其写入寄存器(如果没有、则可能是缺少'EALLOW'的问题)。

    可以在外设时钟启用和 PIE 设置上执行类似的验证。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此处还显示一个重复的主题:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/819772

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christian:

    幸运的是调试这个问题吗?   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没有、我决定走另一条路、我认为这可能是硬件限制、或者我没有在 CPU2上正确设置时钟