udma ssi1 tx 问题?



// dma init start

void dma_init()

{

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);

ROM_uDMAEnable();

ROM_uDMAControlBaseSet(ucControlTable);

ROM_IntEnable(INT_SSI1);

ROM_SSIDMAEnable(SSI1_BASE,SSI_DMA_TX);

ROM_uDMAChannelAttributeDisable(UDMA_CHANNEL_SSI1TX,

                                   UDMA_ATTR_ALTSELECT |

ROM_uDMAChannelControlSet(UDMA_CHANNEL_SSI1TX | UDMA_PRI_SELECT,

                             UDMA_SIZE_8 | UDMA_SRC_INC_8 |

                             UDMA_DST_INC_NONE | UDMA_ARB_8);

//dma init end

}

// 输入10个字节

uint8 g_ZeroArray[PRINTER_WIDTH_BYTE]={0x55};

void sendData()

{

ROM_uDMAChannelTransferSet(UDMA_CHANNEL_SSI1TX | UDMA_PRI_SELECT,

                              UDMA_MODE_BASICg_ZeroArray

                              (void *)(SSI1_BASE + SSI_O_DR),

                              10);

ROM_uDMAChannelEnable(UDMA_CHANNEL_SSI1TX);

ROM_uDMAChannelRequest(UDMA_CHANNEL_SSI1TX);

}

//SSI1 配置

SSIConfigSetExpClk(SPRINT_SSI_BASE, SysCtlClockGet(),

          SSI_FRF_MOTO_MODE_0,

          SSI_MODE_MASTER, 1000000, 8);

检测到key按下时,调用 sendData()发送10个字节,通过示波器,只捕获到9个字节。