Still Enemy 0 16 июня, 2015 Опубликовано 16 июня, 2015 · Жалоба Очень странную дичь я исследую сегодня. Возможно опять моя криворукость даёт о себе знать. Поднят spi(он рабочий) и dma. И при пересылке данных через dma в spi, а в частности пересылке 256 байт данных, выходит такая картина: 195 байт проходят нормально, остаток какая то ересь. У меня IAR и в процессе всяческих манипуляций я понял, что это как то связано с дебагером, потому как, если остановиться на функции пересылки и нажать "Go"(f5), то собственно 195 байт нормально, остальные ересь, а, если же остановиться на функции и нажать "Step Over" (f10), то (о Боги) всё работает адекватно. Дебагер j-link-arm, интерфейс SWD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 16 июня, 2015 Опубликовано 16 июня, 2015 · Жалоба это как то связано с дебагером Отладчик может читать регистры. Флаги могут сбрасываться от чтения. Сброс флагов может влиять на работу периферийных блоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Still Enemy 0 17 июня, 2015 Опубликовано 17 июня, 2015 · Жалоба Я даже представления не имею какие флаги могут сброситься, что может произойти в момент передачи, что данные пойдут в регистр совсем левые. Какие флаги DMA влияют на передаваемый из памяти данные в периферию? я не понимаю. Если вопрос не будет решен, я забью *** и буду делать по 128 байт. Надежнее. Сыт уже второй день хлебать эту дичь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 17 июня, 2015 Опубликовано 17 июня, 2015 · Жалоба Сыт уже второй день хлебать эту дичь. А камушек какой? Не из F3, случайно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Still Enemy 0 17 июня, 2015 Опубликовано 17 июня, 2015 (изменено) · Жалоба А камушек какой? Не из F3, случайно? так нет же, у меня f105. У вас ведь есть какой то опыт с этой проблемой или есть варианты, которые могут решить данную проблему? Изменено 17 июня, 2015 пользователем Still Enemy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dart191 0 17 июня, 2015 Опубликовано 17 июня, 2015 · Жалоба Возможно проблема в том, что почему-то SPI нужна какая-то предварительная задержка перед отправкой, что собственно отладчик и делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 17 июня, 2015 Опубликовано 17 июня, 2015 · Жалоба или есть варианты, которые могут решить данную проблему? Нужно все грамотно инициализировать: 1. Сбросить SPI_CR2_TXDMAEN; 2. Сбросить флаги соответствующего канала DMA и запретить этот канал; 3. Настроить канал DMA и разрешить этот канал; 4. Установить SPI_CR2_TXDMAEN. После этого с небольшой задержкой (тактов 12) DMA начнет записывать значения в SPI. У меня на F100 и F407 выводятся до 1024 байт без каких-либо проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 18 июня, 2015 Опубликовано 18 июня, 2015 · Жалоба У вас ведь есть какой то опыт с этой проблемой или есть варианты, которые могут решить данную проблему? Я делаю вот так. Работает как часы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Still Enemy 0 18 июня, 2015 Опубликовано 18 июня, 2015 · Жалоба После этого с небольшой задержкой (тактов 12) DMA начнет записывать значения в SPI. У меня на F100 и F407 выводятся до 1024 байт без каких-либо проблем. Пасибо большое, вот этот совет частично помог. Поставил задержку(2 мс) после запуска dma и убрал флаг Half transfer complete и всё заработало. Мне всё равно не пригодится этот флаг, я же не по Мбайту передаю, а по 256 байт всего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться