Part Number:MSP430FR2476
您好:
我使用IEC60730的SDK进行FRAM的CRC检测,我看到提供的CRC接口如下所示,请问下,我的.text.2的起始地址是0x10000,如果我想诊断这里的代码,我应该怎么做?
static uint16_t privateCalculateCRC(uint16_t *pStartAddress, uint16_t memorySize){
uint32_t i;
// Feed WDT in case user has WDT enabled before running CRC test
#if ENABLED_WDT
uint16_t wdtConfig = WDTCTL & 0x00ff;
WDTCTL = WDTPW + WDTCNTCL + wdtConfig;
#endif // ENABLED_WDT
// If MSP430 has a CRC module, checksum is calculated using CRC module
#if defined(__MSP430_HAS_CRC__)
// Set initial value for CRC16-CCITT calculation
CRCINIRES= CRC16_CCITT_SEED;
for (i = 0; i < memorySize/2; i++)
{
//Add all of the values into the CRC signature
CRCDIRB= *pStartAddress++;
// Feed WDT in case user has WDT enabled before running CRC test
#if ENABLED_WDT
if((i%50)==0)
{
WDTCTL = WDTPW + WDTCNTCL + wdtConfig;
}
#endif // ENABLED_WDT
}
return (CRCINIRES);
#else
uint8_t j;
uint16_t memoryContent;
uint16_t crc = CRC16_CCITT_SEED;
for(i = 0 ; i < memorySize/2 ; i ++)
{
// Byte reverse
memoryContent = ((*pStartAddress & 0x00FF) << 8) +
((*pStartAddress & 0xFF00) >> 8);
for(j = 0 ; j < 16 ; j++)
{
if((memoryContent ^ crc) >> 15){
crc = (crc << 1) ^ CRC16_CCITT_POLY;
}else{
crc <<= 1;
}
memoryContent <<= 1;
}
pStartAddress++;
}
return crc;
#endif //__MSP430_HAS_CRC__
}
Ben Qin:
你好,参考下这篇文档:
software-dl.ti.com/…/MSP430_IEC60730_Software_Package_Users_Guide-1_04_00_05.pdf
,
a ?:
感谢答复,抱歉我没有说清楚,如上述代码所示,privateCalculateCRC的uint16_t *pStartAddress为16bit地址传入,而我的地址是0x10000,如果直接将0x10000传给pStartAddress,显然是不对的,所以不知道该怎么做。而且我用的msp430fr2476是16bit的mcu。
,
Ben Qin:
a ? said:显然是不对的
是编译有报错吗?还是遇到其他问题了?
,
a ?:
我将0x10000传到privateCalculateCRC的uint16_t *pStartAddress后,地址变为了0,我的理解是0x10000地址超过了uint16_t 的表示范围导致的。
,
a ?:
因为我看到,咱们的示例是通过FRAM的地址传入,然后通过*pStartAddress取地址里的内容,进行CRC16的计算,将0x10000传入,地址就不对了。
,
Ben Qin:
你用的是哪个例程?文件路径发一下。
,
a ?:
你好,路径如下:https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_MSP430_MSP430-IEC60730-SW-PACKAGE
具体是里边的IEC60730_crc_test.c文件
,
Ben Qin:
我咨询下资深工程师后回复您。
,
a ?:
好的,有答复了麻烦知会下,感谢。
,
Ben Qin:
看下这个链接看是否有帮助:
https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/38837/msp430f5528-how-do-i-declare-a-20-bit-pointer-so-i-can-access-the-upper-memory-locations
,
a ?:
根据上述链接提示,问题已解决,非常感谢!
TI中文支持网

