主题中讨论的其他器件:HALCOGEN
器件:TMS570LC4357BZWTQQ1
编译器:TI Clang v2.1.0.LTS、BE32
问题:当使用 DMA 在 SCI3上配置发送串行数据缓冲器时、缓冲器最后一个字节的 MSB 始终在线上设置。 g_dmaCTRL 中设置的缓冲区没有该位设置、并且在 SCI 上直接发送时、该位不会设置。 当使用 DMA 时、该位始终被置位、我们在最后2个字节中携带 CRC、因此它显示为间歇性帧错误。
g_dmaCTRL 设置为 thusly:
G_dmaCTRL dmaControl ={.Sadd = ADDRESS_AS_NUMBER、.DADD = SCI3_TX_ADDR、.CHCTRL = 0、
.FRCNT =长度、.ELCNT = 1、.ELDOFFSET = 0、
.ELSOFFSET = 0、.FRDOFFSET = 0、.FRSOFFSET = 0、
.PORTASGN = PORTA_READ_PORTB_WRITE、.RDSIZE = ACCESS_8_BIT、
WRSIZE = ACCESS_8_BIT、.tType = FRAME_TRANSFERT、.ADDMODERD = ADDR_INC1、
.ADDMODEWR = ADDR_FIXED、.AUTOINIT = AUTOINIT_OFF};
我们列出了 BTC 中断以确认发送已完成:
dmaEnableInterrupt (DMA_CH0、BTC、DMA_INTA);
我不确定从何处开始推文来解决这一问题。 任何见解都值得赞赏。
