Part Number:TMS320F280025
将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.TIMINGMODE = 1; //Asynchronous Timing
LinaRegs.SCIGCR1.bit.CLK_MASTER = 1; //Enable SCI Clock
LinaRegs.SCIGCR1.bit.CONT = 1; //Continue on Suspend
LinaRegs.SCISETINT.bit.SETRXINT = 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 的板子上调试时,查看寄存器的配置情况:
然而查看Expressions 中的寄存配置情况时却是这样的:
可以看到RXENA 和RXIN 都为0,但是在上一张图中(也就是查看Registers)看到的却是有值的,
这是什么情况?
当我发送跟28034 测试时一样的数据帧,LinaRegs.SCIRD.bit.RD 却没有任何变化;发送数据
帧时通过测量GPIO29 的输入情况如下图所示:
GPIO29 确实是有数据输进去的,但是接收寄存器却没有任何值;结合前面的寄存器显示情
况,是不是意味着寄存器配置失败?
结合数据手册关于LIN 结构的框图
按照我的理解是,只要RXENA配置为1,SCIRD 就应该能接收到数据才对。
然而通过Expressions 和Registers查看出现不一样的结果,到底以哪个为准?
还请指点,谢谢!
Cherry Zhou:
您好,您的问题我们已升级到英文论坛寻求帮助,请持续跟进:
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1076930/tms320f280025-emulation-configuration-issues