ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
69668 Топик полностью
temik (21.09.2006 12:53, просмотров: 1) ответил VAI на Гыыы, ему лень разбираться
разобрался уже, но работает не совсем правильно на моей флеше на 16 мегабит функция xByte init_at45(st_at45_Data *pntr) { RESET_CS_DATAFLASH; //сбросим CS для DataFlash initSpi(SPI_MASTER, AT45_SPI_NUM); //проинициализируем SPI volatile xWord tmp=65535; while(--tmp); //задержка 8,8мс while(--tmp); //задержка 8,8мс tmp=16384; while(--tmp); //задержка 2,2мс xWord sig=(at45ReadStatus(pntr)<<8)&0x3C00; //считаем сигнатуру DataFlash tmp=sizeof(at45DensTab)>>2; //кол-во записей в таблице xByte res=1; //результат диагностики for (xWord idx=0; idx<tmp; idx++) //ищем в таблице сигнатуру { if ((at45DensTab[idx].pageSize&0x3C00)==sig) //сигнатура совпала? { pntr->maxBufSize=at45DensTab[idx].pageSize&0x03FF;//ага, размер буфера xLong ltmp=at45DensTab[idx].pageNum; pntr->maxMemSize=ltmp*(xLong)(pntr->maxBufSize);//общий объем DataFlash pntr->num=AT45_SPI_NUM; //номер порта SPI res=0; //результат положительный break; } } if (res) //DataFlash не опознана { pntr->maxBufSize=0; //обнулим все параметры pntr->maxMemSize=0; pntr->num=0; } return(res); //вернем результат } //идентификации возвращает размер датафлеша в байтах равным 262144 :( не маловато ли? привожу структуру из библиотеки резидента - const st_at45_density at45DensTab[]= //таблица типов DataFlash //сигнатура+размер страницы, кол-во страниц { {((0x0C<<8)+264), 512}, //1 Мегабит {((0x14<<8)+264), 1024}, //2 Мегабит {((0x1C<<8)+264), 2048}, //4 Мегабит {((0x24<<8)+264), 4096}, //8 Мегабит {((0x2C<<8)+528), 4096}, //16 Мегабит {((0x34<<8)+528), 8192}, //32 Мегабит {((0x3C<<8)+1056), 8192} //64 Мегабит };