Other Parts Discussed in Thread: TMS320F28377D, C2000WARE
器件型号: TMS320F28377D
主题: C2000WARE 中讨论的其他器件
您好:
我正在 TMS320F28377D 上使用 SCI 模块。
如果另一个器件在 SCI 初始化之前开始发送数据、则有时会发生中断错误。
您能否解释一下为什么会发生这种情况?
谢谢你。
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.
Other Parts Discussed in Thread: TMS320F28377D, C2000WARE
器件型号: TMS320F28377D
主题: C2000WARE 中讨论的其他器件
您好:
我正在 TMS320F28377D 上使用 SCI 模块。
如果另一个器件在 SCI 初始化之前开始发送数据、则有时会发生中断错误。
您能否解释一下为什么会发生这种情况?
谢谢你。
再次感谢您的持续支持。
我想澄清顺序并分享另一个观察结果、这可能有助于缩小问题范围。
在我的设置中、外部器件持续传输数据、并且此传输在 F28377D 上的 SCI 模块初始化之前开始。
我已经确认、当外部器件未传输时、即使稍后初始化 SCI、也不会发生中断错误。
这表明中断条件并不是由于 RX 线路默认为低电平、而是由于 SCI 尚未就绪时发生了有效传输。
外部器件无法延迟传输、因此我正在寻找一种在 MCU 侧处理这种时序不匹配的方法。
对于在这些情况下安全初始化 SCI、或者在模块完全准备就绪之前忽略传入的数据、您是否有任何建议?
您好:
对于延迟的回复以及由此造成的任何混淆、我深表歉意。 我之前在不同的帐户下发帖、但由于登录问题、我想使用另一个帐户继续讨论。
感谢您的持续支持。 我想分享 SCIC 初始化序列和相应的源代码。
时钟配置
•外部晶体振荡器:16MHz
•系统时钟:156MHz
初始化序列
GPIO 配置(内核 1)
2.内核 2 闪存引导
GPIO 配置(内核 2)
4. SCI 配置(核心 2)
工程
/*时钟配置*/
/*•外部晶体振荡器:16MHz */
/*•系统时钟:156MHz */
#define VAL_PCLKCR7 0x00000006
define INIT_SCIC_SCICTL1 0x0003
#define VAL_SCIC_SCICCR 0x0027
#define VAL_SSCIC_SCIHBAUD 0x0000
#define VAL_SSCIC_SCILBAUD 0x00A8
#define VAL_SCIC_SCICTL2 0x0000
#define INIT_SCIC_SCIFFTX 0x4060
#define INIT_SCIC_SCIFFRX 0x4061
#define VAL_SCIC_SCIFFCT 0x0000
#define VAL_SCIC_SCIPRI 0x0000
#define VAL_SCIC_SCIFFTX 0xE060
#define VAL_SCIC_SCIFFRX 0x6061
#define VAL_SCIC_SCICTL1 0x0023
void vInitSciPeri( void );
void vReadyInitSciPeri( void );
void vSetSciCRegs ( void );
/****************************************************************************************************************************
********************************************************************************************************************** /
void vInitSciPeri( void ){
vReadyInitSciPeri();
vSetSciCRegs ();
}
/****************************************************************************************************************************
********************************************************************************************************************** /
void vReadyInitSciPeri( void ){
__ eallow();
G_stRegsCpuSys.uPCLKCR7.dwWord =(无符号长整型)VAL_PCLKCR7;
__ EDIS ();
}
/****************************************************************************************************************************
********************************************************************************************************************** /
void vSetSciCRegs ( void ){
__ eallow();
/* SCIC 控制寄存器 1:启用发送和接收;启用复位;禁用错误中断*/
G_stRegsSciC.uSCICTL1.unWord =(unsigned int) init_SCIC_SCITL1;
/* SCIC 通信控制寄存器:
O 1 字= 8 位
o 无地址位加法
O 环回模式已禁用
o 启用奇偶校验位
O 1 停止位
*/
G_stRegsSciC.uSCICCR.unWord =( unsigned int ) VAL_SCIC_SCICCR;
/* SCIC 控制寄存器 1(更新):启用接收和发送;禁用错误中断*/
G_stRegsSciC.uSCICTL1.unWord =(无符号整数)VAL_SCIC_SCITL1;
/* SCIC 波特率高寄存器:设置 BRR = 168 */
G_stRegsSciC.uSCIHBAUD.unWord =(无符号整数)VAL _ SCIC_SCIHBAUD;
/* SCIC 波特率低寄存器:设置 BRR = 168 */
G_stRegsSciC.uSCILBAUD.unWord =(无符号整数)VAL_SSCIC_SCIBAUD;
/* SCIC 控制寄存器 2:启用 TXRDY、RXRDY 和 BRKDT 中断*/
G_stRegsSciC.uSCICTL2.unWord =(无符号整数)VAL_SCIC_SCICTL2;
/* SCIC FIFO 发送寄存器:禁用发送 FIFO 中断;复位发送 FIFO */
G_stRegsSciC.uSCIFFTX.unWord =(unsigned int) init_SCIC_SCIFFTX;
/* SCIC FIFO 接收寄存器:在 1 个字节上启用接收 FIFO 中断;复位接收 FIFO */
G_stRegsSciC.uSCIFFRX.unWord =(unsigned int) init_SCIC_SCIFFRX;
/* SCIC FIFO 控制寄存器:无延迟*/
G_stRegsSciC.uSCIFFCT.unWord =(无符号整数)VAL_SCIC_SCIFFCT;
/* SCIC SCI 优先级控制:发生故障时立即停止传输*/
G_stRegsSciC.uSCIPRI.UNWord =( unsigned int ) VAL_SCIC_SCIPRI;
/* SCIC FIFO 发送寄存器(更新):禁用发送 FIFO 中断;释放发送 FIFO 复位*/
G_stRegsSciC.uSCIFFTX.unWord =(无符号整数)VAL_SCIC_SCIFFTX;
/* SCIC FIFO 接收寄存器(更新):启用 1 字节时接收 FIFO 中断;释放接收 FIFO 复位*/
G_stRegsSciC.uSCIFFRX.unWord =(无符号整数)VAL_SCIC_SCIFFRX;
/* SCIC 控制寄存器 1(最终):启用发送和接收;释放复位;禁用错误中断*/
G_stRegsSciC.uSCICTL1.unWord =(无符号整数)VAL_SCIC_SCITL1;
__ EDIS ();
}
您好、
时钟配置
•外部晶体振荡器:16MHz
•系统时钟:156MHz
初始化序列
GPIO 配置(内核 1)
2.内核 2 闪存引导
GPIO 配置(内核 2)
4. SCI 配置(内核 2)[/报价]感谢您提供了初始化序列。 这看起来不错。
void vSetSciCRegs( void ){我建议查看 C2000ware 中的 SCI 位字段示例中的 SCI 配置步骤、以了解您的 SCI 配置是否存在差异、这可以 解释 您所面临的中断问题。
C:\ti\c2000\C2000Ware_6_00_00\device_support\f2837xd\examples\cpu1\sci_loopback
C:\ti\c2000\C2000Ware_6_00_00\device_support\f2837xd\examples\cpu1\sci_echoback
[/quote]