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.

[参考译文] 编译器/TMS320F28335:SCI 中断

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/597041/compiler-tms320f28335-sci-interrupt

器件型号:TMS320F28335

工具/软件:TI C/C++编译器

大家好
SCIC 外设用于接收 GPS/INS 集成导航系统中的 GPS 信息、T0、T1、T2 启用、SCIC Rx 中断启用、但 SCIC Rx 中断有时会发生、有时不会发生、因此 GPS 信息接收异常。  我找不到原因。  初始化函数、中断函数和主函数的一部分如下所示。主函数的计算量很大。附录是整个程序代码。

波特率=9600;
void SCIC_init (uint32波特率)

//注意:SCIC 外设的时钟被打开
//在 InitSysCtrl()函数中

//为 SCI-C 初始化 GPIO
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0;//启用 GPIO63的上拉电阻器(SCITXDC)
GpioCtrlRegs.GPBPUD.bit.GPIO62=0;//启用 GPIO62的上拉电阻器(SCIRXDC)

GpioCtrlRegs.GPBQSEL2.bit.GPIO62=3;//异步输入 GPIO62 (SCIRXDC)

GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1;//将 GPIO63配置为 SCITXDC 操作
GpioCtrlRegs.GPBMUX2.bit.GPIO62=1;//将 GPIO62配置为 SCIRXDC 操作
EDIS;

SCIC_fifo_init();

// Buad Rate BBR = LSPCLK (37.5MHz)/(BuadRate*8)- 1.

波特率= 37500000/(波特率*8)-1;

// 1停止位,无环回
//无奇偶校验,8个字符位,
ScicRegs.SCICCR.all =0x0007;
//异步模式,空闲线协议
//启用 TX、RX、内部 SCICLK、
scicRegs.SCICTL1.all =0x0003;

//禁用 RX ERR、睡眠、TXWAKE
ScicRegs.SCICTL2.all =0x0003;

ScicRegs.SCILBAUD =波特率& 0xff;
ScicRegs.SCIHBAUD =(波特率>>>8)& 0xff;

scicRegs.SCICCR.bit.LOOPBKENA=0;//禁用回路

//启用接收中断
ScicRegs.SCICTL2.bit.RXBKINTENA=1;
//启用发送中断
ScicRegs.SCICTL2.bit.TXINTENA=1;
//从复位中撤回 SCI
ScicRegs.SCICTL1.bit.SWRESET = 1;


中断空 SCIC_Rx_ISR (空)

unsigned char t;

while (ScicRegs.SCIRXST.bit.RXRDY)

t = ScicRegs.SCIRXBUF.bit.RXDT;
IF (ISDirectGPS)

scia_xmit_ex (t);

其他

IF (SCIC_RX_COUNT < SCI_RX_BUF_MAX)

SCIC_RX_BUF[SCIC_RX_COUNT++]= t;
SCIC_RX_NEW = true;


//确认此中断以接收来自组8的更多中断
PieCtrlRegs.PIEACk.bit.ACK8 = 1;

MAIN ()

(笑声)

while (!(ins_Para.IsNoGPS))

IF (SCIC_RX_NEW)

//如果有一些新的 GPS 数据
Close_SCIC_RX;
R = UBX_Addbytes (SCIC_RX_BUF、SCIC_RX_COUNT);
SCIC_RX_COUNT = 0;
SCIC_RX_NEW =错误;
OPEN_SCIC_RX;
(笑声)

(笑声)

(笑声)

e2e.ti.com/.../3480.DSP_5F00_INS_5F00_1.0.rar

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

    您可能正在使用 FIFO 增强功能、这是正确的吗? 如果您使用 RX FIFO、那么当 RXFFST 大于或等于 RXFFIL 时、您应该接收到一个中断、这是否是您的问题?

    如果在调试代码时遇到困难、请禁用其他中断以简化测试。 通常情况下、如果一个中断未正确清除其标志、那么它将影响另一个中断。

    此致、
    Cody