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.

[参考译文] CCS/LAUNCHXL-F28069M:无法接收 UART 数据

Guru**** 2606725 points
Other Parts Discussed in Thread: CONTROLSUITE, LAUNCHXL-F28069M

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/680661/ccs-launchxl-f28069m-unable-to-receive-uart-data

器件型号:LAUNCHXL-F28069M
Thread 中讨论的其他器件:controlSUITE

工具/软件:Code Composer Studio

您好! 我在通过 UART 接收数据时遇到了令人难以置信的麻烦。 我了解 UART 的工作原理、我在 MSP430上使用了以下系统。 我将就该问题提供尽可能多的信息:

我希望从 HC06接收几个字符。 我知道 HC06以9600波特发送信息、因为我的系统在 MSP430上工作。

目前、我没有收到任何中断。 我只是在主代码中的永久循环中。

我配置了 MUX_SEL=0 CH_SEL=1 、因为我在    LaunchPad 上的 J1.3上使用 GPIO28、如下所示:

我已经减少了代码以显示如何设置 SCI。 其中包括:

#include "Main.h"//主 include 文件 <--这不是问题。

/***原型**** /
// CPU 计时器原型
_interrupt void sciaRxFifoIsr (void);


//全局变量
//--全局变量
char RXParseData[256];


void main (void)

//-- CPU 初始化
InitSysCtrl();//初始化 CPU (文件:sysctrl.c)
InitGpio();//初始化共享 GPIO 引脚(文件:gpio.c)
InitPieCtrl();//初始化并启用 PIE (文件:PIECTRL.c)
InitWatchdog();//初始化看门狗计时器(文件:watchdog.c)


//-- SCI
EALLOW;

/*为所选引脚启用内部上拉*/
//用户可以启用或禁用上拉。
//这将启用指定引脚的上拉电阻。

GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;//为 GPIO28启用上拉(SCIRXDA)


/*将所选引脚的限定条件设置为仅异步*/
默认情况下、//输入与 SYSCLKOUT 同步。
//这将为所选引脚选择异步(无限定条件)。

GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;//异步输入 GPIO28 (SCIRXDA)

/*使用 GPIO 寄存器配置 SCI-A 引脚*/
//这指定哪些可能的 GPIO 引脚将是 SCI 功能引脚。

GpioCtrlRegs.GPAMUX2.bit.GPIO28=1;//为 SCIRXDA 操作配置 GPIO28

EDIS;

//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
Dint;

//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//此函数位于 F2806x_PIECTRL.c 文件中。
InitPieCtrl();

//禁用 CPU 中断并清除所有 CPU 中断标志:
IER = 0x0000;
IFR = 0x0000;

//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。 这对于调试很有用。
//可以在 F2806x_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2806x_PieVect.c 中找到
InitPieVectTable();

//此示例中使用的中断被重新映射到
//此文件中的 ISR 函数。
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
PieVectTable.SCIRXINTA =&sciaRxFifoIsr;
EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的

//FIFO
SciaRegs.SCICCR.all =0x0007;// 1停止位,无回路
//无奇偶校验,8个字符位,
//异步模式,空闲线协议

SciaRegs.SCICTL1.all =0x0001;//启用 RX、内部 SCICLK
                            //禁用 TX、RX ERR、睡眠、TXWAKE
SciaRegs.SCICTL2.bit.RXBKINTENA=1;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = 0x0123;// 9600 baud -> 22.5MHz/(9600*8)-1

SciaRegs.SCIFFRX.All=0x0022;
SciaRegs.SCIFFCT.All=0x00;

SciaRegs.SCICTL1.all =0x0021;//从复位中撤回 SCI
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;

//启用此示例所需的中断
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//启用 PIE 块
PieCtrlRegs.PIEIER9.bit.INTx1=1;// PIE 组9,INT1
PieCtrlRegs.PIEIER9.bit.INTx2=1;// PIE 组9,int2
IER = 0x100;//启用 CPU INT
EINT;

//--启用全局中断
asm (" CLRC INTM、DBGM");//启用全局中断和实时调试

int i;
对于(i=0;i<256;i++) RXParseData[i]= 0;

while (1)//无限循环-等待中断


}//end of main()

_interrupt void sciaRxFifoIsr (void)

uint16 i = 0;
PieCtrlRegs.PIEACX.All|=0x100;//发出 PIE ACK
while (i<=15)

RXParseData[i]=SciaRegs.SCIRXBUF.all;//读取数据
i++;


SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志



/***文件结尾 /

我将提供所需的任何其他信息。  

如果您可以找到问题并帮助我解决此问题。 我将永远感激!  

感谢您的观看!

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

    您好!

    我写信告诉您、已指派一名 C2000团队成员回答此帖子。

    谢谢
    Vasudha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Andrew、
    首先、我们来排除硬件问题、对 JP1的引脚3上的信号进行示波、然后验证您在 TP9和 F28069M 器件的引脚50上具有相同的信号。 为此、我希望您需要安装 JP6和 JP7、您现在的配置看起来像是设置为通过 USB 电缆与 PuTTY 等 PC 终端程序进行通信。(我的建议可能在另一篇文章中不正确)

    一旦您开始将信号输入器件、我们就可以了解代码可能工作、也可能不工作。 从 SCI 回送之类的 controlSUITE 示例开始、将会很好。

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

    我已更改配置、因此 JP6和 JP7上有其跳线。 这确实会给我一个中断、但每个值都是0x80。

    在 JP1、TP9的引脚3和微控制器的引脚50上可以看到相同的信号。 我已确认我以9600波特发送了良好的数据。

    不过、我遇到了帧错误! 我将发送一个起始位+ 8位+一个停止位、我在示波器上确认了这一点。 我已经检查了我使用的 LSPCLK、它是 SYSCLK/4、它变成了22.5MHz、这在示波器上得到了确认。 用于配置的寄存器位于此处:

    SysCtrlRegs.LOSPCP。all = 0x0002;//低速 periph 时钟预分频器、LSPCLK=SYSCLKOUT/4
    SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1;//使能 LSPCLK 到 SCI-A

    9600波特的计算是考虑到这一点的。 (22.5MHz/(9600*8)- 1.

    我从这个例子开始! 现在我在这里! 有什么想法吗?

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

    Andrew、

    我采用了回声技术示例、并在 LAUNCHXL-F28069M LaunchPad 上运行它。 它似乎以9600波特率运行、无需修改、因此这可能不是您的问题。

    在回声示例中、奇偶校验被禁用、您是否在发送器中使用奇偶校验? (以启用奇偶校验 SCICCR。 奇偶校验使能= 1)

    除了奇偶校验、回显示例看起来应该默认具有所需的设置。

    您是否对该示例进行了任何更改?

    此致、
    Cody  

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

    我认为我刚刚删除了其中的 TX 部分。 我去重新导入它、但我所做的更改仍然存在。 如何恢复原始版本?  我希望这只是一个涉及这一点的问题。

    我也不会从 HC06发送奇偶校验位(我也让它在 MSP430上工作、没有奇偶校验)、下面是发送到电路板引脚3、TP9和 MCU 引脚50的信息:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Andrew、
    如果您在 CCS 中修改了原始文件、您应该能够右键点击项目浏览器中的文件、然后选择"替换为"->"Local History"。

    如果没有本地历史记录、您仍可以重新安装 controlSUITE。

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

    波特率错误,0x00010024!