打印
[CC3200]

请教一个CC3200的SPI的DMA接收问题

[复制链接]
761|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
exiao2011|  楼主 | 2020-10-21 20:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CC3200的SPI工作在从机DMA乒乓模式下,使能收发中断,部分初始化如下
SPIFIFOLevelSet(ulBase,8,8);
SPIFIFOEnable(ulBase, SPI_RX_FIFO | SPI_TX_FIFO);
SPIIntEnable(ulBase,SPI_INT_RX_FULL|SPI_INT_TX_EMPTY);
中断处理中:
static void SpiIntHandler()
{
unsigned long ulStatus;

ulStatus = MAP_SPIIntStatus(GSPI_BASE,true);
MAP_SPIIntClear(GSPI_BASE,SPI_INT_DMARX|SPI_INT_DMATX);

if(ulStatus & SPI_INT_DMARX)
{
if(g_DMARcvBank == 0)
{
UDMASetupTransfer(UDMA_CH30_GSPI_RX,UDMA_MODE_PINGPONG,32,
UDMA_SIZE_8,UDMA_ARB_8,
(void *)(GSPI_BASE + MCSPI_O_RX0),UDMA_SRC_INC_NONE,
(void *)&buf[0], UDMA_DST_INC_8);
g_DMARcvBank = 1;
}
else{
........
}
请问DMA工作原理及中断是什么时候触发的?我不是专业做这个的,很多可能基本的东西不一定了解,我按我的理解说一下流程,帮我看一下是否正确,谢谢
首先SPI收到一个字节数据到寄存器DR中,然后由于开通了DMA,所以DR中的数据自动转移到DAM的缓存FIFO中,当缓存FIFO中的数据数量达到要求的值时,触发中断,交由CPU进行进一步处理???是这样的吗????

使用特权

评论回复

相关帖子

沙发
huangcunxiake| | 2020-10-21 20:42 | 只看该作者
这个系列都要淘汰了吧

使用特权

评论回复
板凳
dirtwillfly| | 2020-10-21 21:09 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

141

帖子

0

粉丝