ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
28 апреля
1098092 Топик полностью
il-2 (06.05.2021 07:04, просмотров: 384) ответил Aleksey_75 на "Не лезь в налаженный механизм и он будет работать" Решил отрефакторить функцию SPI-DMA. т.к. раньше её писал на циклах ожидания, между командой (адресом) была пауза порядка 2.48uS (aka 3 байта передачи), написал на прерываниях, передача ок! при чтении после адреса байт теряется, использую прерывания и флаги DMAx_FLAG_TCx.... Если ставлю брекпоинт после адреса, 10 из 10 следующий байт будет принят! если в прерывании по передачи ставлю
Опять тебе 1-байтовое ФИФО жизнь портит :-) Слишком сумбурно ты описал проблему, но я как телепат предположил следующее: 

Ты используешь прерывание окончания передачи DMA, которое возникает гораздо раньше чем окончание передачи по SPI. А при наличии у SPI 1-байтового ФИФО прерывание DMA_TC будешь получать до того как передались 2 последних байта, соответственно в момент прерывания по DMA_TC у тебя еще не принято по SPI 2 байта. А при отладке и с паузой у тебя эти байты успевают прийти.

На этом мои телепатические способности исчерпаны :-) Так что код в студию :-)