[an error occurred while processing this directive]
|
Случаем никто не использовал subj?
Проблема как переключить корректно передачу на приём для эмулирования обмена с AT45DBxxx?
Например нужно считать состояние устройства (0xD7), на что DataFlash в ответ высылает байт состояния. Делаю так:
1. CS для DataFlash выставляем в ручном режиме...
2. Программируем передачу по DMA 1 байта (0xD7) - байт уходит
3. Стопоримся перепрограммируемся на приём одного байта из DataFlash
4. Заканчиваем приём - снимаем CS
Проблема в том что считывается 0 (хотя реально DataFlash отвечает 0xA4). При увеличении буфера приёма до 2 байт видим что принялось нужное 0xA4, но во второй байт буфера... (первый естественно 0)
В DataSheet по этому поводу следующее:
---------
When changing the direction for SPI port DMA (from TX to RX or vice versa), the program must conclude the DMA in one direction, disable the channel, then start the next DMA in the other direction. TX and RX SPI DMA sequences cannot be chained with descriptors.
---------
Так вот, как перестроить с передачи на приём SPI в режиме DMA так, чтобы DMA начинал заполнять буфер корректно... Например считать только один байт из устройства...
Может кто имел опыт по вышеупомянутой связке и что подскажет...
E-mail: info@telesys.ru