微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC2530芯片Flash写

CC2530芯片Flash写

时间:12-22 整理:3721RD 点击:

在对CC2530芯片进行Flash写步骤中,有这样的描述:

1、设置FADDRH:FADDRL为起始地址(这是18位字节地址的16个最高有效位)。

请问这个地址设置后是否能自增,还是在编程4个字节后重新设置下一个地址呢?

4、在20us内对FWDATA进行四次写操作。

请问四次写操作具体是如何写的?

z-stack协议附带。如果是做应用,建议直接使用这个函数,快速满足应用需求

/**************************************************************************************************

* @fn          HalFlashWrite

*

* @brief       This function writes 'cnt' bytes to the internal flash.

*

* input parameters

*

* @param       addr - Valid HAL flash write address: actual addr / 4 and quad-aligned.

* @param       buf - Valid buffer space at least as big as 'cnt' X 4.

* @param       cnt - Number of 4-byte blocks to write.

*

* output parameters

*

* None.

*

* @return      None.

**************************************************************************************************

*/

void HalFlashWrite(uint16 addr, uint8 *buf, uint16 cnt)

{

#if (defined HAL_DMA) && (HAL_DMA == TRUE)

 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

}

请问CC2531F256的256KBFlash中有哪些Bank中的哪些范围是不能读写操作的?256KB最后1KB(按空间编排地址:3FC00~3FFFF)有什么特殊用途吗?能进行正常的读写操作吗?

所有bank都能读写,是否有特殊用途是跟你的应用有关的。如果你是使用IAR,请了解xcl文件的一些定义

-D_ZIGNV_ADDRESS_SPACE_START=(((_NR_OF_BANKS+1)*_FIRST_BANK_ADDR)-0x3800)

-D_ZIGNV_ADDRESS_SPACE_END=(_ZIGNV_ADDRESS_SPACE_START+0x2FFF)

-Z(CODE)ZIGNV_ADDRESS_SPACE=_ZIGNV_ADDRESS_SPACE_START-_ZIGNV_ADDRESS_SPACE_END

那这段空间最好是不要FLASH操作的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top