Other Parts Discussed in Thread: LAUNCHXL2-570LC43, TMS570LC4357
器件型号: TMS570LC4357-TMS570LC4357 EP
主题中讨论的其他器件: LAUNCHXL2-570LC43、 HALCOGEN、TMS570LC4357
Hai Team、
我将 TMS570LC4357-SCI2 控制器与 LAUNCHXL2-570LC43 (B) 开发套件一起使用、在此过程中、我已经以 9600bps 波特率、2 个停止位且无奇偶校验来初始化了卤代中的 EP 和 SCI2。 已启用 Rx 中断、我尝试在信号帧中发送大约 32 字节的数据、并使用 docklight 在终端端进行监测。 但问题是未发生传输且未发生 DMA 中断。 我已经分享了 refernee 的测试代码。 请做必要的事情。
#include “HL_sys_common.h"</s>“
#include “HL_sci.h"</s>“
#include “HL_sys_dma.h"</s>“
#include “HL_sys_vim.h"</s>“
#include “HL_system.h"</s>“
//* TMS570LC4357 的 DMA 请求分配*/
/* SCI DMA 使能位*/
#define SCI_SET_TX_DMA (1<<16)
#define SCI_SET_RX_DMA (1<<17)
#define SCI_SET_RX_DMA_ALL (1<18)
/*缓冲区大小*/
#define BUFFER_SIZE 32
/*缓冲区 — 必须在共享 RAM 中*/
pragma DATA_SECTION (TX_DATA、“.sharedRAM")“)
pragma DATA_SECTION (RX_DATA、“.sharedRAM")“)
uint8 tx_data[buffer_size];
uint8 RX_DATA[BUFFER_SIZE];
g_dmaCTRL g_dmaCTRLPKT1、g_dmaCTRLPKT2;
/* SCI 寄存器地址 — 处理字节序*/
#if ((__little_endian _= 1)||(__little_ENDIAN__= 1))
#define SCI2_TX_ADDR ((Uint32)(&(sciREG2->td))
#define SCI2_RX_ADDR ((Uint32)(&(sciREG2->RD))
#else
#define SCI1_TX_ADDR ((Uint32)(&(sciREG1->td))+ 3)
#define SCI1_RX_ADDR ((Uint32)(&(sciREG1->RD)+ 3)
#define SCI2_TX_ADDR ((Uint32)(&(sciREG2->td))+3)
#define SCI2_RX_ADDR ((Uint32)(&(sciREG2->RD))+3)
#endif
内部 main (void)
{
Uint32 sciTxData、sciRxData;
int i;
/*加载测试数据*/
对于 (I = 0;I < BUFFER_SIZE;I++)
{
TX_DATA[i]= i;
}
/*初始化 SCI */
sciInit();
/*启用 DMA */
dmaEnable();
#if 0
/*将 DMA 请求 SCI1 TX 分配给通道 0 */
dmaReqAssign (DMA_CH0、DMA_REQ29);
/*将 DMA 请求 SCI1 RX 分配到通道 1 */
dmaReqAssign (DMA_CH1、DMA_REQ28);
sciTxData = SCI1_TX_ADDR;
sciRxData = SCI1_RX_ADDR;
#else
/*将 DMA 请求 SCI2 TX 分配给通道 0 */
dmaReqAssign (DMA_CH0、DMA_REQ41);
/*将 DMA 请求 SCI2 RX 分配给通道 1 */
dmaReqAssign (DMA_CH1、DMA_REQ40);
sciTxData = SCI2_TX_ADDR;
sciRxData = SCI2_RX_ADDR;
#endif
/*为 TX(通道 0)配置 DMA 控制数据包*/
G_dmaCTRLPKT1.Sadd =(Uint32) TX_DATA;
G_dmaCTRLPKT1.DADD = sciTxData;
G_dmaCTRLPKT1.CHCTRL = 0;
G_dmaCTRLPKT1.FRCNT = 1;
G_dmaCTRLPKT1.ELCNT = BUFFER_SIZE;
G_dmaCTRLPKT1.ELDOFFSET = 0;
G_dmaCTRLPKT1.ELSOFFSET = 1;
G_dmaCTRLPKT1.FRDOFFSET = 0;
G_dmaCTRLPKT1.FRSOFFSET = 0;
G_dmaCTRLPKT1.PORTASGn = PORTB_READ_PORTB_WRITE;
G_dmaCTRLPKT1.RDSIZE = ACCESS_8_BIT;
G_dmaCTRLPKT1.WRSIZE = ACCESS_8_BIT;
g_dmaCTRLPKT1.tType = FRAME_TRANSFER;
G_dmaCTRLPKT1.ADDMODERD = ADDR_INC1;
G_dmaCTRLPKT1.ADDMODEWR = ADDR_FIXED;
G_dmaCTRLPKT1.AUTOINIT = AUTOINIT_OFF;
/*为 RX(通道 1)配置 DMA 控制数据包*/
G_dmaCTRLPKT2.Sadd = sciRxData;
G_dmaCTRLPKT2.DADD =(Uint32) RX_DATA;
G_dmaCTRLPKT2.CHCTRL = 0;
G_dmaCTRLPKT2.FRCNT = 1;
G_dmaCTRLPKT2.ELCNT = BUFFER_SIZE;
G_dmaCTRLPKT2.ELDOFFSET = 1;
G_dmaCTRLPKT2.ELSOFFSET = 0;
G_dmaCTRLPKT2.FRDOFFSET = 0;
G_dmaCTRLPKT2.FRSOFFSET = 0;
G_dmaCTRLPKT2.PORTASGn = PORTB_READ_PORTB_WRITE;
G_dmaCTRLPKT2.RDSIZE = ACCESS_8_BIT;
G_dmaCTRLPKT2.WRSIZE = ACCESS_8_BIT;
g_dmaCTRLPKT2.tType = FRAME_TRANSFER;
G_dmaCTRLPKT2.ADDMODERD = ADDR_FIXED;
G_dmaCTRLPKT2.ADDMODEWR = ADDR_INC1;
G_dmaCTRLPKT2.AUTOINIT = AUTOINIT_OFF;
/*设置控制数据包*/
dmaSetCtrlPacket (DMA_CH0、g_dmaCTRLPKT1);
dmaSetCtrlPacket (DMA_CH1、g_dmaCTRLPKT2);
/*启用 DMA 通道*/
dmaSetChEnable (DMA_CH0、DMA_HW);
dmaSetChEnable (DMA_CH1、DMA_HW);
#if 0
/*启用 SCI DMA 请求*/
// sciREG1->SETINT |= SCI_SET_TX_DMA | SCI_SET_RX_DMA | SCI_SET_RX_DMA_ALL;
sciREG1->SETINT |= SCI_SET_TX_DMA;
#else
/*启用 SCI DMA 请求*/
SCIREG2->SETINT |= SCI_SET_TX_DMA | SCI_SET_RX_DMA | SCI_SET_RX_DMA_ALL;
#endif
/*等待 DMA 传输完成*/
while(!dmaGetInterruptStatus (DMA_CH1、BTC));
/*禁用 DMA 通道*/
dmaSetChEnable (DMA_CH0、DMA_SW);
dmaSetChEnable (DMA_CH1、DMA_SW);
/*验证接收的数据*/
对于 (I = 0;I < BUFFER_SIZE;I++)
{
IF (RX_DATA[i]!= TX_DATA[i])
{
/*数据不匹配 — 处理错误*/
while (1);//停止此处进行调试
}
}
/*如果我们到达此处、则 DMA 传输成功*/
while (1)
{
/*应用程序代码*/
}
返回 0;
}
移动数据
{
矢量 (X) :origin=0x00000000 length=0x00000020
FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
FLASH1 (RX):origin=0x00200000 length=0x00200000
栈 (RW):origin=0x08000000 length=0x00001500 /* 5.25 KB */
SHAREDRAM (RW):origin=0x08001500 length=0x00000400 /*对于 DMA 为 1KB */
RAM (RW):origin=0x08001900 length=0x0007E700 /* remaining ~506 KB */
}
很重要
{
.intvecs :{}>向量
.text :{}> FLASH0
.const :{}> FLASH0
.cinit :{}> FLASH0
.pinit :{}> FLASH0
.bss :{}> RAM
.data :{}> RAM
.sysmem :{}> RAM
.sharedRAM :{}> SHAREDRAM /* DMA 缓冲区*/
}

