Суть проблемы вот в чем.
Хотелось написать простенький код для чтения записи байтов во флэш контроллера nRF24LE1 по интерфейсу программирования SPI.
Решил заморочиться с PDC. Так вот сначала (при чтении данных из флэш) надо отправить 1 байт (команда), затем 2 байта (адресс) потом, тактируя, контроллер выдает байты из флэш, инкрементируя свой счетчик адреса.
Делаю так:
- Предварительно проинициализировал стек, генераторную часть, контроллер прерываний, контроллер SPI, разрешив соотвествующие ноги для контроллера.
(пишу из дома, код на работе, собственно это надо для работы, возможности кита для nRF24LE1 немного ограничены для наших задач)
- Инициализирую часть PDC для SPI, назначил 4 буфера, 2 для команд по 3 байта (на прием и передачу), 2 для данных по 8 байт (на прием и передачу.
- Прописал число байт для PDC_RPR, PDC_RCR, PDC_RNPR, PDC_RNCR, PDC_TPR, PDC_TCR, PDC_TNPR, PDC_TNCR.
Запускаю...
В общем первые 2 байта контроллер передал команду (0х03 чтение флэш) старший байт адреса и ... дальше он передал 0хFF (адресс 0х0100). Предварительно я проинициализировал переменные все и записал все в буфер.
Ну соответственно контроллер отдал арму данные из флэш по адресу 0х01FF.
Дальше пробую просто с 2 буферами 1 на чтение 2 на передачу по 11 байт каждый. Первый байт буфера на передачу соотвественно команда 0x03 второй и третий адрес 0х0100.
Смотрел все по осцилу. Во втором случае нормально передалось. Прочитал байты из флэш, сравнил, совпадают (ну почти... почему-то nRF24LE1 младший бит байта не держит до спада, по фронту сохранение бита по спаду изменение, ну это уже другая история).
Всегда работал с PDC такого никогда не было правда я до этого не использовал next буфер)))
