[an error occurred while processing this directive]
|
Пытаюсь читать/писать в/из флешки 24С1024
Вот конфигурация И2Ц:
I2C_Setup Init;
Uint16 sendbuf[3];
Init.addrmode = 0;
Init.ownaddr =0x0020;
Init.sysinclock = 372;
Init.rate = 100;
Init.bitbyte = 0;
Init.dlb = 0;
Init.free = 0;
sendbuf[0]=0x00; // MSB адреса флешки
sendbuf[1]=0x0f; // LSB адреса флешки
sendbuf[2]=0xCC; // При записи байт, который нужно записать
I2C_reset();
I2C_setup(&Init);
Это была инициализация, дальше я пытаюсь делать чтение или запись так:
Запись:
x=I2C_write(sendbuf,3,1,0xA0,2,30000); // Тоесть передаем адрес байта памяти во флешке и собственно что записать (итого 3 байта) 0хА0 - адрес флешки (слейв устройства)
х - код ошибки. после выполнения = 0. Тоесть все как бы нормально но при чтении флешки программатором нужного знаечиня не обнаружено :(
Чтение:
x=I2C_write(sendbuf,2,1,0xA0,2,30000);
y=I2C_read(&recbuf[0],1,1,0xA0,1,30000,0);
Сначала пишем адрес байта памяти (2 байта) потом читаем значение этого байта. (Таков протокол)
Так вот [САМОЕ ИНТЕРЕСНОЕ] если сделать еще одно чтение
y=I2C_read(&recbuf[1],1,1,0xA0,1,30000,0);
то получим те два байта что и передавали. Причем DLB==0.
Еще при зацикливании чтения (Sequential Read) на ноге SCL НЕ ВИДНО КЛОКОВ. Может я забыл что то включить в И2Ц модуле ???
П.С. Кто делал отзовись !!!
E-mail: info@telesys.ru