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.

[参考译文] TMS320F2.8055万:SCI连接问题:从F2.8055万到F2.8054万

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/573402/tms320f28055-sci-connection-issue-from-f28055-to-f28054

部件号:TMS320F2.8055万

您好,TI:

 我正在测试F2.8055万和F2.8054万M之间的通信,使用来自控制器的示例代码Suit: Example_2805xSci_FDLB_int。

测试F2.8055万本身不会将数据从Tx循环回Rx。 但我想将数据从F2.8055万传输到F 2.8054万 m ,然后F2.8054万M读取。

对于硬件连接:I已将F2.8055万 (GPIO28/SCIRXDA和GPIO29/SCITXDA)连接到F2.8054万M  (GPIO28/SCITXDA和GPIO29/SCIRXDA)

因此,我采取了以下步骤:

I disabled Rx interrupts ISR from F2.8055万 (因为我只需要Tx)

已断开Tx从F2.8054万M中断ISR

禁用环回(SciaRegs.SCICCR.bit.LOOPBKENA =0;//从fifo_init禁用环回)

但是我无法从F2.8055万接收到F2.8054万M的数据,我想知道我错过了什么使它们相互通信?

我还在下面附上了示例代码:

void main (void)
{
UINT16 I;

//步骤1. 初始化系统控制:
// PLL,看门狗,启用外设时钟
//此示例函数可在F2805x_sysctrl.c文件中找到。
InitSysCtrl();//

步骤2. 初始化GPIO:
//此示例函数可在F2805x_gPIC.c文件中找到,
//说明了如何将GPIO设置为其默认状态。
// InitGpio();//
仅为SCI-A和SCI-B功能设置GP I/O
//此函数位于F2805x_Sci.c
InitSciGpio();//

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

//将PIE控制寄存器初始化到其默认状态。
//默认状态是禁用所有PIE中断,
并清除标志//。
//此函数位于F2805x_PIECTRL.c文件中。
InitPieCtrl();

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

//使用指向shell Interrupt
// Service routines (ISR)的指针初始化PIE矢量表。
//这将填充整个表,即使在此
示例中未使用中断//。 这对于调试非常有用。
// shell ISR例程可在F2805x_DefaultIsr.C.中找到
//此函数可在F2805x_PieVect.c.中找到
本

例中使用的InitPieVectorTable();//中断被重新映射到此
文件中找到的// ISR函数。
EALLOW;//需要写入EALLOW保护寄存器
PieVectorTable.SCIRXINTA =&sciaRxFifoIsr;
PieVectorTable.SCITXINTA =&sciaTxFifoIsr;
EDIS;//要禁用写入EALLOW保护寄存器

,需要执行此操作//步骤4。 初始化所有设备外设:
scia_fifo_init();//初始化SCI-A

//步骤5。 用户特定代码,启用中断:

//初始化发送数据。 每次传输后,此数据
//将为
下一次传输更新(i = 0;I<2;I++)
{
sdataA[i]= i;
}

RDATA_pointA = sdataA[0];
//启用此示例所需的中断
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;

//步骤6。 空闲循环。 只需坐下来永远循环(可选):
for (;;);
}

void错误(void)
{
ASM(" ESTOP0");//测试失败!! 停止!
对于(;;);}


中断void sciaTxFifoIsr(void){

UINT16 I;
对于(i=0;i< 2;i++)
{
SciaRegs.SCITXBUF=sdataA[i]; //发送数据
}

对于(i=0;i< 2;i++) //增量发送下一个周期的数据
{
sdataA[i]=(sdataA[i]+1)& 0x00FF;
}

SciaRegs.SCIFFTX.Bit.TXFFINTCLR=1;//清除SCI中断标志
PieCtrlRegs.PIEACK.all|=0x100; //问题PIE ACK
}


中断void sciaRxFifoIsr(void){

UINT16 I;
对于(i=0;i<2;i++)
{
rdataA[i]=SciaRegs.SCIRXBUF.all;//读取数据
}
对于(i=0;i<2;i++) //检查收到的数据
{
if (rdataA[i]!=((RDATA_pointA+I)& 0x00FF)) error();
}
RDATA_pointA =(RDATA_pointA+1)和0x00FF;

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

PieCtrlRegs.PIEACK.all|=0x100; //问题pie ack
}


void scia_fifo_init()
{
SciaRegs.sciccr.all =0x0007;// 1停止位,无回送
//无奇偶校验,8个字符位,
//异步模式,空闲行协议
SciaRegs.SCICTL1.all =0x0003;//启用TX,RX,内部SCICLK,
//禁用RX ERR,睡眠,TXWAKE
SciaRegs.SCICT2.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXKINTENA =1;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = 0x0030;//SCI_PRD;
SciaRegs.SCICCR.bit.LOOPBKENA =0;//启用回环
SciaRegs.SCIFFTX.All=0xC022;
SciaRegs.SCIFFRX.All=0x0022;
SciaRegs.SCIFCT.0x00All=SCISC23;

SciaReGL.0 //从重置
SciaRegs.SCIFFTX.Bit.TXFIFOXRESET=1;
SciaRegs.SCIFFRX.Bit.RXORESET=1;}//===================================================================================放弃SCI




//没有更多。
//===========================================================================================================================================

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

    浙江

    听起来应该工作,您能看到GPIO25在F2.8055万设备上切换吗?

    其次,让我们确保您的硬件连接正确,您是否按如下所示连接了设备?

    _________________                    _________________
    |       F2.8055万        |                  |    F2.8054万M 
    |
    |                      Tx |----------- | Rx                
    |
    |                      Rx |----------- | Tx                  
    |
    |_________________ |                  |_________ |

     

    此致,
    科迪

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