打印

CC2540 FLASH为什么写不进去

[复制链接]
3348|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单片机学习0|  楼主 | 2014-6-13 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的芯片是CC2540,调用TI自带的写函数,为什么FLASH写不进去,但是调用读函数可以读里面已经有的值,就是写不进去,大侠帮忙看看那里有问题

void HalFlashWrite(uint16 addr, uint8 *buf, uint16 cnt)
{
#if 1
  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);
  FCTL |= 0x02;         // Trigger the DMA writes.
  while (FCTL & 0x80);  // Wait until writing is done.
#endif
}

相关帖子

沙发
dirtwillfly| | 2014-6-14 14:48 | 只看该作者
找个官方提供的例程试试,看是硬件的问题还是代码的问题

使用特权

评论回复
板凳
wuha| | 2017-8-29 19:05 | 只看该作者
你好,我也遇到了同样的问题,请问你当时是如何解决的?

使用特权

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

本版积分规则

4

主题

16

帖子

0

粉丝