Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
запись в память AT45DB041B через DLP2232M (FTDI)
Отправлено
kapitan_pushka (195.209.240.30) 30 июня 2010, г. 13:56
Здравствуйте!
Нужен совет специалиста. Даташиты изучали, но, видимо, чего-то не уловили. Вот код, что в нем не так? (хочется записать в память и считать потом записанное)
запись:
WriteStartCondition.bClockPinState = false;
WriteStartCondition.bDataOutPinState = false;
WriteStartCondition.bChipSelectPinState = false;
WriteStartCondition.dwChipSelectPin = ADBUS3ChipSelect;
WaitDataWriteComplete.bWaitDataWriteComplete = true; WaitDataWriteComplete.dwWaitDataWritePin = ADBUS2DataIn;
WaitDataWriteComplete.dwDataWriteTimeoutmSecs = 1000;
HighPinsWriteActiveStates.bPin1ActiveState = false;
HighPinsWriteActiveStates.bPin1State = false;
HighPinsWriteActiveStates.bPin2ActiveState = false;
HighPinsWriteActiveStates.bPin2State = false;
HighPinsWriteActiveStates.bPin3ActiveState = false;
HighPinsWriteActiveStates.bPin3State = false;
HighPinsWriteActiveStates.bPin4ActiveState = false;
HighPinsWriteActiveStates.bPin4State = false;
WriteControlBuffer[0] = 0x82; //запись в основную память через буфер
WriteControlBuffer[1] = 0; // адрес
WriteControlBuffer[2] = 0;
WriteControlBuffer[3] = 0;
WriteDataBuffer[0] = '5';
WriteDataBuffer[1] = '5';
WriteDataBuffer[2] = '5';
WriteDataBuffer[3] = '5';
Status = SPI_Write(ftHandle, &WriteStartCondition,
true, false, 32, &WriteControlBuffer,
4, true, 32, &WriteDataBuffer,
4, &WaitDataWriteComplete, &HighPinsWriteActiveStates);
чтение:
ReadStartCondition.bClockPinState = false;
ReadStartCondition.bDataOutPinState = false;
ReadStartCondition.bChipSelectPinState = false;
ReadStartCondition.dwChipSelectPin = ADBUS3ChipSelect;
dwReadDataWordAddress = 132;
WriteControlBuffer[0] = 0x52; // чтение из основной памяти
WriteControlBuffer[1] = 0;
WriteControlBuffer[2] = 0;
WriteControlBuffer[3] = 0;
WriteControlBuffer[4] = 0; // говорят, что нужно изпользовать некий дополнительный байт
Status = SPI_Read(ftHandle, &ReadStartCondition, true, false, 40, &WriteControlBuffer,
5, true, false, 32, &ReadDataBuffer, &dwNumDataBytesReturned, &HighPinsWriteActiveStates);
запись не проходит по тайм-ауту. а чтение всегда выдает один результат независимо ни от чего (даже от опкода) - типа "яяяяяяяя".
Составить ответ | Вернуться на конференцию
Ответы
- а в даташите АПИ про WriteStartCondition.bChipSelectPinState написано, что true = 1, false = 0....{+} - kapita_pushka (30.06.2010, 15:51:34 195.209.240.30, 199 байт)
- WriteStartCondition.bChipSelectPinState = true - MegaJohn (30.06.2010, 14:09:32 81.222.85.88, пустое)
- 'я' = 0хФФ, те у вас на линии MISO всегда лог "1", -> 2. косяк в железе (?) или коосяк в софте - RED_DRAGON (30.06.2010, 14:02:15 213.242.214.185, пустое)