Упирается большой проект не хочет портироватся с GCC в IAR.
Чтение FAT успешно происходит. Контроль CRC добавил.
Но данные похоже не корректно читает :-(
Посмотрел AN10406, какие-то не понятные манипуляции при вычислении адреса
int mmc_read_block(WORD block_number)
{
WORD Checksum;
WORD varh,varl;
IOCLR0 = SPI_SEL; /* clear SPI SSEL */
varl=((block_number&0x003F)<<9);
varh=((block_number&0xFFC0)>>7);
/* send MMC CMD17(READ_SINGLE_BLOCK) to read the data from MMC card */
MMCCmd[0] = 0x51;
/* high block address bits, varh HIGH and LOW */
MMCCmd[1] = varh >> 0x08;
MMCCmd[2] = varh & 0xFF;
/* low block address bits, varl HIGH and LOW */
MMCCmd[3] = varl >> 0x08;
MMCCmd[4] = varl & 0xFF;
/* checksum is no longer required but we always send 0xFF */
MMCCmd[5] = 0xFF;
SPI_Send(MMCCmd, MMC_CMD_SIZE );
Вызывается функция по моему корректно
/* write, read back, and compare the complete 64KB on the MMC
* card each block is 512 bytes, the total is 512 * 128 */
for ( BlockNum = 0; BlockNum < MAX_BLOCK_NUM; BlockNum++ )
Есть какие либо соображения?