本人将字库下载到了SPIFLASH 型号AT45DB04,容量:512K 现在根据汉字的内码 算出地址Address 根据2312标准:
Address =( (MSB - 0xA1) * 94 + (LSB - 0xA1))*32+ BaseAdd;
ReadFlashData((Address , DataBuf0, 32);
这样为什么得不到准确的数据?
做以下改变却可以,这是为什么?
Address =( (MSB - 0xA1) * 94 + (LSB - 0xA1))*32+ BaseAdd; iFlashPageNo = (INT32U)(Address / 264); (264为SPIFLASH每页的BYTES数)
iOffsetAddr = Address-iFlashPageNo*264;
ReadFlashData((iFlashPageNo<<9)+iOffsetAddr, DataBuf0, 32);
为什么iFlashPageNo<<9)+iOffsetAddr才是地址 而不是直接是Address iFlashPageNo<<9,为什么是左移9位? |