“线程:测试”中讨论的其它部件
大家好,团队
将28034 LIN 相关程序移植到280025后,发现未收到数据,280025寄存器基本配置为28034,并且可以在28034板上正常通信。
280025上的配置如下:
//引脚和时钟配置
EALLOW;
CpuSysRegs.PCLKCR19.Bit.LIN_A = 1;
GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;//GPIO28 (LIN TX)
GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;//GPIO29 (LIN RX)
GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 3;
GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 0x01;
GpioCtrlRegs.GPACTRL.Bit.QUALPRD3 = 0x03;
GpioCtrlRegs.GPAGMUX2.bit.GPIO28 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 2;
GpioCtrlRegs.GPAGMUX2.bit.GPIO29 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 2;
EDIS;
//LIN 寄存器配置
EALLOW;
LinaRegs.SCIGCR0.bit.reset = 0;
LinaRegs.SCIGCR0.bit.reset = 1;
LinaRegs.SCIGCR1.bit.SWnRST = 0;
LinaRegs.SCIPIO0.bit.RXFUNC = 1;//这两个句子在28034上不可用
LinaRegs.SCIPIO0.bit.TXFUNC = 1;//左侧配置与28034相同
LinaRegs.SCIGCR1.bit.Sleep = 0;
LinaRegs.SCIFLR.Bit.TXWAKE = 0;
LinaRegs.SCIFLR.Bit.TXEMPTY = 1;
LinaRegs.SCIFLR.Bit.TXRDY = 1;
//配置为接收数据
LinaRegs.SCIGCR1.bit.RXENA = 1;
LinaRegs.SCIGCR1.bit.TXENA = 0;
LinaRegs.SCIGCR1.bit.TIMNGMODE =1;//异步计时
LinaRegs.SCIGCR1.bit.CLK_MASTER =1;//启用 SCI 时钟
LinaRegs.SCIGCR1.bit.cont = 1;//挂起时继续
LinaRegs.SCISETINT.Bit.SETXINT = 1;
LinaRegs.SCISETINT.Bit.SETTXINT = 1;
LinaRegs.SCIFORMAT Bit.CHAR = 0x7;
LinaRegs.SCIGCR1.bit.SWnRST = 1;
EDIS;
调试期间发送的数据帧:01 03 F0 08 00 01 36 C8
1)在28034板上调试时,检查寄存器的配置如下:

接收数据帧后,接收寄存器的结果如下图所示(接收数据前 RXENA 和 RXIN 为1):

2) 在280025板上调试时,检查寄存器的配置如下:

而表达式中寄存器的配置如下所示:

RXENA 和 RXIN 均为0,,但在上一个图中有一个值。 这是为什么?
3)传输与28034测试相同的数据帧时,LinaRegs.scird.bit.RD 不会改变。 发送数据帧时测量 GPIO29的输入,如下图所示:

GPIO29确实有数据传输,但接收寄存器没有任何值。 与上一个寄存器显示结合使用,这是否意味着寄存器配置失败?
从数据手册中的 LIN 结构方框图中,只要 RXENA 配置为1,SCIRD 就能接收数据,对吗? 但是,通过表达式和寄存器可以看到不同的结果。
请帮您检查此案例? 谢谢。
此致,
樱桃