• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术讨论 > CC2530的DMA输模式跟源/目的地址的增量要怎么配置?

CC2530的DMA输模式跟源/目的地址的增量要怎么配置?

录入:edatop.com     点击:

CC2530的DMA输模式跟源/目的地址的增量要怎么配置?


请问下,CC2530的DMA在传输中,如果我要传输一个3成员全是uint32的结构体,那么1个字/字节算一次传输还是传输整个结构体算一次传输?
还有就是,我在配置DMA的时候目的地址的增量如果不是0就不能写入flash,这个怎么搞?
我现在情况是,在写这个结构体的时候flash能被写入但是每个成员都只被写入了第一个字节,搞不懂传输模式跟源/目的地址的增量要怎么配置。
以下是我按ZSTACK配置的代码:  halDMADesc_t *ch = HAL_NV_DMA_GET_DESC();
  HAL_DMA_SET_SOURCE(ch, buf);
  HAL_DMA_SET_DEST(ch, &FWDATA);
  HAL_DMA_SET_VLEN(ch, HAL_DMA_VLEN_USE_LEN);
  HAL_DMA_SET_LEN(ch, (cnt * HAL_FLASH_WORD_SIZE));
  HAL_DMA_SET_WORD_SIZE(ch, HAL_DMA_WORDSIZE_BYTE);
  HAL_DMA_SET_TRIG_MODE(ch, HAL_DMA_TMODE_SINGLE);
  HAL_DMA_SET_TRIG_SRC(ch, HAL_DMA_TRIG_FLASH);
  HAL_DMA_SET_SRC_INC(ch, HAL_DMA_SRCINC_1);
  HAL_DMA_SET_DST_INC(ch, HAL_DMA_DSTINC_0);
  // The DMA is to be polled and shall not issue an IRQ upon completion.
  HAL_DMA_SET_IRQ(ch, HAL_DMA_IRQMASK_DISABLE);
  HAL_DMA_SET_M8( ch, HAL_DMA_M8_USE_8_BITS);
  HAL_DMA_SET_PRIORITY(ch, HAL_DMA_PRI_HIGH);
  HAL_DMA_CLEAR_IRQ(HAL_NV_DMA_CH);
  HAL_DMA_ARM_CH(HAL_NV_DMA_CH);
  FADDRL = (uint8)addr;
  FADDRH = (uint8)(addr >> 8);
//  DMA0CFGH =(uint8)(((uint)&dmaCh0) >> 8) & 0x00FF;
//  DMA0CFGL = (uint8)((uint)&dmaCh0) & 0x00FF;
  FCTL |= 0x02;         // Trigger the DMA writes.
  while (FCTL & 0x80);  // Wait until writing is done.

结构体拷贝到buffer里面,然后源地址和目的地址都要同时增加

上一篇:CC2650 什么会导致串口程序死在UARTConfigSetExpClk这个函数?
下一篇:BLE OAD镜像的大小是根据自己程序大小设置的吗?

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图