Other Parts Discussed in Thread: HALCOGEN
Tool/software: TI C/C++ Compiler
Hi
I trying to prepare a simple example with the SCI-LIN interface that transmits data via DMA. I found various examples for similar processors but it seems I miss something important. The SCI LIN interface seems to be set up properly, I can send and receive data. But as soon as I switch to DMA mode no data is transmitted. I set up the basic project via HalCoGen.
What I cannot figure out is:
- What is the correct DMA request line for the SCI-LIN?
- Do I have to set up special memory settings? I use standard MPU settings.
- Do I need to set any special settings in HalCoGen?
- Are there any speed limits? I use 500'000 Baud.
I use the following procedure:
// Global data
U8 hello[] = "*** Hello World ***\r";
// Within Main function
dmaReqAssign(DMA_CH0, 27); //is 27 correct ???
g_dmaCTRL ctrl = {
.CHCTRL = 0,
.SADD = (uint32) hello, /* source address */
.DADD = ((uint32) &(scilinREG->TD)) + 3, /* initial dest. address, big endian */
.RDSIZE = ACCESS_8_BIT,/* readsize*/
.WRSIZE = ACCESS_8_BIT,/* writesize*/
.ELCNT = 1, /* element count */
.FRCNT = 20, /* frame count*/
.PORTASGN = 4,
.TTYPE = FRAME_TRANSFER,
.ADDMODERD = ADDR_INC1, /* address mode read */
.ADDMODEWR = ADDR_FIXED, /* address mode write */
.AUTOINIT = AUTOINIT_OFF
};
/* - setting dma controlpacketsfor transmi t*/
dmaSetCtrlPacket(DMA_CH0, ctrl);
/* - setting the dma channelto triggeron h/w request */
dmaSetChEnable(DMA_CH0, DMA_HW);
dmaEnable();
while ((dmaREG->GCTRL & DMA_GCTRL_BUSBUSY) != 0U) {
} /* Wait */
/* EnableTX DMA */
scilinREG->SETINT |= (1 << 16);
Thanks for any help.
Best regards, Valentin

