TI中文支持网
TI专业的中文技术问题搜集分享网站

关于cc2530 HalFlashWrite 的地址范围问题

TI工程师您好,

我现在想用HalFlashWrite写入指定地址,最好是在NV里,不知道那些位置是可用的呢?芯片是CC2530 F256

还有 HalFlashWrite 的几个参数都不是很明白

addr- actual addr / 4 and quad-aligned. 这个参数和HalFlashErase的page的关系是什么样的?

下面的两个参数,如果我只是要写一个 1 进去,那buf是否设置为4字节长度的数值?比如一个long int?还是一个4字节的数组?

buf – Valid buffer space at least as big as 'cnt' X 4.
cnt – Number of 4-byte blocks to write.

谢谢!

VV:

你好,

关于NV里面哪些用户可以用,哪些协议栈已经用掉,请参考

C:\Texas Instruments\Z-Stack Home 1.2.0\Documents\API\OSAL API.pdf 第10节

HalFlashWrite函数中,除以4,是因为CC2530 Flash写操作必须是一次4个字节的,所以要除以4.  擦写的话,必须是一个page整体擦掉。

因为一次写4个字节,所以最小单位要实际的数除以4

Shanshan Ouyang:

回复 VV:

谢谢VV,

但OSAL API 里面给的值是给 NV item ID的,之前我有问过你这个ID是否可以决定写入的实际地址,你说不行。那为什么在这里又可以了呢?

按照你的说法,0x0401-0x0FFF是可用的, 我试着按照你说的写了对0x0401的读写操作,不知是否正确:

{

uint8 buff[4] = {0x00, 0x00, 0x00, 0x01}

HalFlashErase(??);  // page该如何计算?

while( FCTL & 0x80 ); // wait for erase to complete

HalFlashWrite(0x0101, buff, 1);   // 0x401/4 向上取整等于0x101HalFlashRead(??, 0x0000, buff, 1);

}

 请尽快回复,十分感谢!!!

Shanshan Ouyang:

回复 VV:

请尽快回复,谢谢!

VV:

回复 Shanshan Ouyang:

你好,

在使用osal_nv_write根据NV ID里面会根据ID去计算该item位于flash的实际位置,然后再调用HalFlashRead函数。

赞(0)
未经允许不得转载:TI中文支持网 » 关于cc2530 HalFlashWrite 的地址范围问题
分享到: 更多 (0)