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.

[参考译文] TMS320F28379D:CPU2可以##39;t 初始化 SCIA 并读取 buf、但 CPU1可以。

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1311066/tms320f28379d-cpu2-can-t-initialize-the-scia-and-read-the-buf-but-cpu1-can

器件型号:TMS320F28379D

大家好、工程师

我曾尝试使用 CPU2初始化 SCIA、某些 GPIO 初始化正在 CPU1上运行、但无法正常工作。 程序如下所示

以下内容在 CPU2上运行

void initscia()
{
EALLOW ();
SCIA.SCICTL2.bit.TXINTENA = 1;
SCIA.SCICTL2.bit.RXCKINTENA=1;
scia.SCILBAUD.all = 3&0xFF;//波特率
SCIA.SCIHBAUD.ALL = 3>8;
SCIA.SCICCR.bit.LOOPBKENA=0;//禁用环回
SCIA.SCIFFTX.ALL = 0xC022;//0xC022;
SCIA.SCIFFRX.ALL = 0x0022;//0x0022;FIFO 深度= 2时中断
SCIA.SCIFFCT.all = 0x00;

SCIA.SCICTL1.all = 0x0023;//从复位中撤回 SCI
SCIA.SCIFFTX.BIT.TXFIFORESET = 1;
SCIA.SCIFFRX.bit.RXFIFORESET = 1;
protect();

以下内容在 CPU1上运行

void initscia()
{
EALLOW ();
SYSTEM.PCLKCR7.bit.SCI_A = 1;//启用 SCI-A 的 LOSCLK 时钟
GPIOCtrl.GPAGMUX1.bit.GPIO8 = 1;
GPIOCtrl.GPAMUX1.bit.GPIO8 = 2;//启用 SCIA TXD = GPIO08
GPIOCtrl.GPACSEL2.bit.GPIO8 = 1;
GPIOCtrl.GPAGMUX2.bit.GPIO28 = 0;
GPIOCtrl.GPAMUX2.bit.GPIO28 = 1;//启用 SCIA RXD = GPIO28
GPIOCtrl.GPACSEL4.bit.GPIO28 = 1;
GPIOCtrl.GPAPUD.bit.GPIO8 = 1;//禁用 GPIO8的 PU
GPIOCtrl.GPAPUD.bit.GPIO28 = 1;//禁用 GPIO28的 PU
protect();

但是、当我将这些代码合并在一起并在 CPU1上运行时、可以很好地建立通信。

您能在这种情况下提供帮助吗?

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

    您好!

    您必须将使用中的外设分配给 CPU2。 您可以更新器件中的 CPUSEL5寄存器、将外设正确分配给 CPU2。

    谢谢。

    阿迪亚

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

    非常感谢您的建议、它现在可以正常工作。