реклама на сайте
подробности

 
 
> Не срабатывает прерывание при чтении по DMA
avg33
сообщение Aug 21 2018, 18:22
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 7-08-18
Пользователь №: 106 564



Я общаюсь с SPI флэшкой через USART в синхронном режиме. Передача и прием организованы по DMA каналам. Посылки фиксированной длины (1024 байта).
Алгоритм обмена выглядит так:
1. Активирую флэш (CS=0)
2. Настраиваю DMA канал на прием 1024 байт. Разрешаю прерывание по чтению IRQ_RX
3. Настраиваю другой DMA канал на передачу 1024 байт. Разрешаю прерывание по передаче IRQ_TX - в этот момент начинается передача/прием
4. В обработчике IRQ_TX очищаю флаг разрешения прерывания, отключаю DMA канал передачи
5. В обработчике IRQ_RX очищаю флаг разрешения прерывания, отключаю DMA канал чтения + деактивирую флэш (CS=1)

Ну то есть стандартный SPI обмен: посылаю 1024 байта - одновременно принимаю 1024 байта. По окончанию передачи/приема обрабатываю прерывания.

И все вроде бы работает. Но иногда (очень и очень редко) бывает ситуация, когда прерывание по передаче срабатывает, а прерывание по чтению нет!
Что я вижу в дебагере в этот момент:
1. Счетчик DMA по передаче равен 0, а по чтению 1. То есть DMA отправил 1024 байта, а прочитал почему-то только 1023. Соответственно, прерывание по чтению не сработает никогда.
2. Ошибки переполнения при чтении (overrun error) нет. Все флаги ошибок равны 0.
3. В регистре чтения USART лежит последний байт посылки (0x89). То есть последний (1024-й) байт посылки похоже таки пришел в регистр. Но счетчик не обнулился
4. Аппаратный флаг прерывания по чтению равен 0. То есть, последний байт был вычитан из регистра буфер. Либо он даже не устанавливался в 1, когда последний байт пришел в регистр

Не могу понять чем это все вызвано. Ведь если отправлено 1024 байта, то и прочитать шина должна была 1024 байта. Байт ведь не мог "потеряться". Или мог? В чем может быть причина такого поведения?
Повторюсь, ошибка проявляется крайне редко, в остальном алгоритм четко работает

Сообщение отредактировал avg33 - Aug 21 2018, 18:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Herz
сообщение Sep 16 2018, 14:06
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Господа! Прошу без грубостей. Если есть какие-то недосказанности или разночтения терминов, это ещё не повод наезжать друг на друга. Помощь предполагает терпение. Если его нет, лучше прекратить общение. Спасибо за понимание.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- avg33   Не срабатывает прерывание при чтении по DMA   Aug 21 2018, 18:22
- - zombi   Цитата(avg33 @ Aug 21 2018, 21:22) Я обща...   Aug 21 2018, 18:42
|- - avg33   Цитата(zombi @ Aug 21 2018, 21:42) В Ваше...   Aug 21 2018, 18:55
- - zombi   Цитата(avg33 @ Aug 21 2018, 21:22) В реги...   Aug 21 2018, 19:13
|- - avg33   Цитата(zombi @ Aug 21 2018, 22:13) Раз зн...   Aug 21 2018, 19:57
|- - controller_m30   Цитата(avg33 @ Aug 21 2018, 22:57) 3. Обр...   Aug 21 2018, 20:43
|- - avg33   Цитата(controller_m30 @ Aug 21 2018, 23:4...   Aug 22 2018, 20:23
- - controller_m30   В чём может быть дело не знаю. Тем более не извест...   Aug 21 2018, 19:15
- - haker_fox   Почитайте мои пути про SPI + DMA. Там LPC4337, но ...   Aug 23 2018, 08:21
|- - avg33   Цитата(haker_fox @ Aug 23 2018, 11:21) По...   Sep 12 2018, 15:36
|- - jcxz   Цитата(avg33 @ Sep 12 2018, 18:36) спасиб...   Sep 12 2018, 19:34
|- - avg33   Цитата(jcxz @ Sep 12 2018, 22:34) Значит ...   Sep 12 2018, 20:31
|- - V_G   Цитата(avg33 @ Sep 13 2018, 06:31) Буду п...   Sep 12 2018, 23:44
|- - jcxz   Цитата(avg33 @ Sep 12 2018, 23:31) Да, ви...   Sep 13 2018, 05:46
|- - avg33   ЦитатаПрерывания (от периферийного блока) к работе...   Sep 13 2018, 13:18
|- - HardEgor   Цитата(avg33 @ Sep 13 2018, 20:18) Очень ...   Sep 14 2018, 08:43
||- - avg33   Цитата(HardEgor)Возможно при переводе перепутали п...   Sep 16 2018, 12:24
||- - jcxz   Цитата(avg33 @ Sep 16 2018, 15:24) А поци...   Sep 16 2018, 13:16
||- - HardEgor   Цитата(avg33 @ Sep 16 2018, 19:24) F2MC-1...   Sep 16 2018, 16:41
|- - jcxz   Цитата(avg33 @ Sep 13 2018, 16:18) Очень ...   Sep 14 2018, 10:02
|- - HardEgor   Цитата(jcxz @ Sep 14 2018, 17:02) Не обяз...   Sep 15 2018, 09:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th August 2025 - 22:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01896 секунд с 7
ELECTRONIX ©2004-2016