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.

[参考译文] TMS320F28386S:不能更改波特率

Guru**** 2382060 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1345068/tms320f28386s-baud-rate-cannot-be-changed

器件型号:TMS320F28386S
主题中讨论的其他器件:SysConfigC2000WARE

大家好!

我使用 SCI 与编码器进行通信。
目前、从 SCIC 模块切换到 SCID 模块后、我无法更改波特率。
在 SysConfig 中将 SCID 设置为115200bps 后、我尝试通过以下函数将其更改为2.5 MHz。

  EALLOW;                            //这是写入 EALLOW 保护的寄存器所必需的

   ClkCfgRegs.LOSPCP.bit.LSPCLKDIV = 0;  //针对 SCI 进行了更改

   EDIS;                                //这是禁用对 EALLOW 保护寄存器的写入所必需的

 

   ScidRegs.SCIHBAUD.bit.baud = 0x00;

   ScicRegs.SCILBAUD.bit.baud = 0x09;       // 9  (0x0009)= 2,500,000bps


但是、我无法正确地与编码器通信。
如果我使用 ScicRegs 而不是 ScidRegs、则波特率似乎正确改变。

从 SCIC 模块更改为 SCID 模块是否需要任何设置?

此外、是否需要进行任何设置来更改波特率?

此致、

伊藤

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

    尊敬的  Ito:

    当您使用 SCIC 与 SCID 时、您是否能够在运行项目时检查正在使用的 SCI 模块的寄存器值以及 LOSPCP 值(使用持续刷新的 CCS"Registers"视图窗口)。 SCIC 与 SCID 之间的 SCI 配置或 LSPCLK 分频器值是否有任何差异?

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢您的答复。

    当前的 SCID 设置是图片中显示的 SysConfig、 还有我之前发送给大家的函数。
    过去使用 SCIC 时、我们仅使用 SysConfig 来设置它、而图片中的 PinMux 设置为 SCIC。
    换句话说、从 SCIC 更改为 SCID 时的区别是 PinMux 配置、
    仅添加的函数。

    我无法找到无法将波特率从115200bps 更改为2.5Mbps 的任何原因。
    这有什么原因吗?

    此致、

    伊藤

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

    尊敬的 Ito:

    您是说、当您尝试在 SysConfig 波特率中键入2.5Mbps 时、它不允许您这么做吗? 或者只是看到了错误的 SCI 速率输出?

    您能否检查寄存器(使用 CCS 中的寄存器视图窗口、持续刷新)和/或检查 SysConfig 生成的代码(使用右上角的<>箭头、查看 board.c)、以查看 LOSPCP 分频器(对于作为 SCI 时钟源的 LSPCLK)是否 和 SCI 波特率寄存器值是否符合预期?

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢您的答复。

    否、SysConfig 中的默认设置为115200bps。
    之后、我使用我之前发送给您的函数将其设置为2.5Mbps。
    在使用 SCIC 模块时、我在 SysConfig 中将波特率设置为115200bps、此后未更改波特率。
    这是我客户的代码、我会在收到代码后立即进行检查。

    此致、

    伊藤

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

    尊敬的 Ito:

    在 Board_init ()之前或之后实现的函数(您之前发送的函数)?  

    稍后在你的 main()中调用 Board_init()将 实现 SysConfig  中的设置,并在该过程中覆盖现有配置,这是需要检查的。

    但是是的、请让我知道客户/您是否可以按照我提到的、在可以时检查寄存器。

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢您的答复。

    是的,函数是在 Board_init()之后编写的。
    因此、似乎没有任何覆盖。

    我已获得客户的文件、请检查友谊。

    此致、

    伊藤

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

    尊敬的 Ito:

    刚刚接受了朋友的请求。 请留出1-2天时间让我来看看代码。  您是否还仔细检查了每种情况下的 SCI 引脚?

    另请注意、我还想与您分享一个常见问题解答、如果您尚未看到该常见问题解答、它可以对 SCI 调试提供帮助: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1031947/faq-my-c2000-sci-is-not-transmitting-and-or-receiving-data-correctly-how-do-i-fix-this 

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢您检查代码!
    这是一个客户应用、因此未确定范围。
    我会向客户提供常见问题解答。

    此致、  

    伊藤

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

    尊敬的 Ito:

    浏览了一些规范并提出了一些后续问题、以便更好地了解情况:

    对于 SCI 初始化、请查看我发送的 SCI 常见问题解答、其中指导您如何按特定顺序初始化 SCI。 我在 ti_unit_SCI.c 文件中的 USER_INITAL_SCI ()中看不到此流程发生。 此外、我在项目中看到了三个不同的 SCI 实例(SCIA、SCIB、SCID)-所有三个实例都有问题吗? 还是仅限 SCID?

    我还想澄清一下您遇到的具体问题是:您是否已尝试运行代码并实际发现来自 SCI 的波特率不正确? 如何检查波特率是多少? 您是否在运行代码时观察到 LOSPCP 以及 SCIHBAUD 和 SCILBAUD 的寄存器值以及看到了错误的值?

    当您说"无法与编码器正常通信"时、您最初是指什么? 这是否意味着您能够运行应用程序代码但收到错误数据? 或看到其他一些错误?

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢您的答复。

    目前正在审核此常见问题解答。

    唯一的问题是 SCID。

    LOSPCP 设置正确、但 SCILBAUD 具有0xD8、而不是0x09。
    换句话说、波特率仍然是默认设置115200。

    "无法与编码器通信"的含义是可以执行代码、
    但不能更改波特率、无法进行通信。

    此致、

    艾里森

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

    尊敬的 Ito:

    好的是 LOSPCP 正在准备好。 请告诉我该常见问题解答是否对您有所帮助。

    我的第一条建议是编辑 SCI 初始化函数、以便在更改 SCI 波特寄存器时添加 SCI 软件复位。 您可以通过将 SCICTL1.SWRESET 设置为0、然后配置 SCI 波特寄存器、再将 SCICTL1.SWRESET 设置为1、从复位状态撤回 SCI 模块来执行此操作。 如果有变化、请告诉我。 您是否在 SysConfig 外部配置任何其他基于 SCI 的配置? 还是仅限 SCI 波特?

    如果这不起作用、我还有几个问题要问您:

    1. 在调试模式下"单步执行"代码行时、以及在持续刷新的情况下观察 CCS 寄存器窗口中的寄存器值时、您/客户是否会看到其余 SCI 寄存器按预期变化? 您是否看到 SCILBAUD 和 SCIHBAUD 的值在任何时候发生变化?
    2. 是否有原因您不尝试在 SysConfig 中更改此设置? 或者您是否曾尝试使用 SysConfig、但这也没有更改这些寄存器? 如果您更改了 SysConfig 中的值、您能否检查 board.h 文件(点击右上角的<>箭头并单击该文件以检查生成的代码-它应该会更改其中的定义)。
    3. 你只是尝试设置 SCIHBAUD/SCILBAUD 在你的 user_initial_SCI(void),正确吗?
    4. 请在这些行处设置断点、并单步执行它们以查看它们是否在寄存器中发生变化。  

    ScidRegs.SCIHBAUD.bit.BAUD = 0x00;
    ScidRegs.SCILBAUD.bit.BAUD = 0x09; // 9 (0x0009) = 2,500,000bps

    如果您尚未准备就绪、我还建议客户参考 C2000Ware 中的 SCI 示例、因为这些示例对于比较 SCI 初始化/代码非常有帮助(位于{C2000Ware}\driverlib\f2838x\examples\C28x\sci 的 driverlib 示例、以及位于{C2000Ware}\device_support\f2838x\examples\cpi 的 bitfield 示例)。  

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢您的答复。

    我将回答这些问题。

    1,确认
    在 SysConfig 中将 SCID 模块波特率,为115200后为2 μ s
    因为我需要将 SCID 波特率设置为2.5Mbps。
    SysConfig 只能执行初始设置、对吗?
    3,是的、正确。
    4,我们已确认波特率设置为2.5MBPS、但未接收到数据、似乎将数据覆盖为115200。

    让我解释一下目前的情况。

    1 μ s,能够将数据设置为2.5Mbps。
    2 μ s,、即使在执行代码之后、也无法接收数据、并且发现波特率覆盖为原始115200bps。
    3,我们这次开发的微控制器是 F28384D、而不是 F28386S。
    客户似乎没有确认这一点。
    F28388D 过去使用的软件好像是原样使用在 F28384D 中。 这应该不是问题、因为它属于 F2838x 系列。
    4,所有软件都写入 F28384D 的 CPU1。
    5 μ s,SWRESET 用于防止覆盖、该软件可以暂时设置为2.5MBPS、但稍后似乎会重写为115200bps。

    客户认为这是由 CCS 或命令文件引起的。
    您能帮我们弄清楚它是什么吗?

    此致、

    伊藤

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

    尊敬的 Ito:  

    调用 SysConfig 设置初始配置(通过 board_init()函数)是正确的。 之后、您实施的任何其他代码/配置都将覆盖您的 SysConfig 配置。 如果稍后将 SCI 波特率设置为不同的值、则应覆盖115200 SysConfig 设置。  

    客户是否能够确定波特率值在何处/何时发生变化? 在观察这些寄存器的同时逐步执行代码、应该可以让客户了解这一点、看看这些 SCI 波特率寄存器值何时发生变化、以及它们是否更改为正确的值-请让我知道它们是否能够这样做。

    此致、

    艾里森

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

    尊敬的 Allison:

    根据 Allison 的建议、我在与客户进行调试后发现了原因。

    原因是 USB 驱动程序使用异步串行、并且只有通信设置使用 SCI API、
    USB 驱动程序使用异步串行、只有通信设置使用 SCI 的 API。
    SCI 配置 API 在用户初始化过程结束后执行、每当有来自更高级别 USB 器件的设置的更改请求时、都会通过 SCI 配置进行初始化。
    因此、我们更改了配置、将 SCIC 用于 USB 配置、将 SCID 用于编码器通信、并消除了故障。

    感谢 Allison、我们解决了这个问题。
    非常感谢。

    伊藤