微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > cc2530 的随机数发生器怎么用于计算CRC16

cc2530 的随机数发生器怎么用于计算CRC16

时间:10-02 整理:3721RD 点击:

如题所诉。。。

协议栈里面的

/*********************************************************************
* @fn Onboard_rand
*
* @brief Random number generator
*
* @param none
*
* @return uint16 - new random number
*
*********************************************************************/
uint16 Onboard_rand( void )
{
return ( MAC_RADIO_RANDOM_WORD() );
}

这个不是计算CRC16,而是产生随机数的吧
手册那里说可以用来计算CRC16,但是没说清楚怎么用 

协议栈里面有关于CRC计算的软件实现的,请参考 

/******************************************************************************
* @fn runPoly
*
* @brief Run the CRC16 Polynomial calculation over the byte parameter.
*
* @param crc - Running CRC calculated so far.
* @param val - Value on which to run the CRC16.
*
* @return crc - Updated for the run.
*/
static uint16 runPoly(uint16 crc, uint8 val)
{
const uint16 poly = 0x1021;
uint8 cnt;

for (cnt = 0; cnt < 8; cnt++, val <<= 1)
{
uint8 msb = (crc & 0x8000) ? 1 : 0;

crc <<= 1;
if (val & 0x80) crc |= 0x0001;
if (msb) crc ^= poly;
}

return crc;
}

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

网站地图

Top