-
- У STM32F05 в SPIx_CR2 есть битик NSSP, взведение которого заставляет SPI дергать NSS при каждом цикле передачи. Очень удобно при использовании DMA. м.б. и у F4xx что-то подобное есть. - nanorobot(19.07.2013 17:45)
- Спасибо за комментарий, но это я задаю вопросы в данном топике :) Я не работаю с МК STM32 и знаком с этой продукцией лишь "шапочно", посредством чтения документации. - rezident(19.07.2013 17:53)
- это не вопрос, это наводка - nanorobot(19.07.2013 18:13)
- На водку я и сам дать могу :) Меня не домыслы, а конкретная реализация интересует. Я же обозначил в корневом топке, что обращаюсь к тем, кто работает с STM32F4xx, а не только читает документацию, также как и я. - rezident(19.07.2013 18:16)
- Водку пью исключительно на свои .. ну когда пью - nanorobot(19.07.2013 18:39)
- На водку я и сам дать могу :) Меня не домыслы, а конкретная реализация интересует. Я же обозначил в корневом топке, что обращаюсь к тем, кто работает с STM32F4xx, а не только читает документацию, также как и я. - rezident(19.07.2013 18:16)
- это не вопрос, это наводка - nanorobot(19.07.2013 18:13)
- А что будет, если DMA не сможет передать байт вовремя? NSS в середине посылки в 1 перейдёт? - Apтём(19.07.2013 17:48)
- правильнее всего будет так: передача каждого байта пакета будет сопровождаться установкой/снятием сигнала NSS - nanorobot(20.07.2013 19:17)
- Неправильно. В подавляющем большинстве применений Slave Select служит сигналом фреймовой синхронизации. Если каждый байт будет сопровождаться импульсом SS, то фрейм будет "пошинкован" на отдельный байты и перестанет быть фреймом. - rezident(20.07.2013 19:27)
- Все правильно. меня не интересуют домыслы(с). Фреймовая синхронизация - да, при снятом бите NSSP. При установленном - работа с ЦАП и АЦП, которые актуализируется по срезу сигнала NSS. Речь идет только о STM32F05x, у прочих, похоже, эта опция nanorobot(35 знак., 20.07.2013 23:08 - 23:21)
- Почитал я RM0091 про SPI в STM32F05xxx/06xxx. Есть отличия. Поправьте, если я неправ. rezident(255 знак., 21.07.2013 00:42)
- Непонятно зачем вообще нужен такой NSS? О чём создатели МК думали, когда такой SPI делали... - Apтём(20.07.2013 19:41)
- Все правильно. меня не интересуют домыслы(с). Фреймовая синхронизация - да, при снятом бите NSSP. При установленном - работа с ЦАП и АЦП, которые актуализируется по срезу сигнала NSS. Речь идет только о STM32F05x, у прочих, похоже, эта опция nanorobot(35 знак., 20.07.2013 23:08 - 23:21)
- Неправильно. В подавляющем большинстве применений Slave Select служит сигналом фреймовой синхронизации. Если каждый байт будет сопровождаться импульсом SS, то фрейм будет "пошинкован" на отдельный байты и перестанет быть фреймом. - rezident(20.07.2013 19:27)
- NSS прыгает в 0 в начале передачи, и обратно по ее окончании. Однажды начавшись, передача не прервется, пока не закончится, или Вы о чем? - nanorobot(19.07.2013 18:24)
- Я о том, что по SPI передаются как правило (у меня так) не байты, а пакеты. Активных каналов ДМА может быть несколько и в параллель они не работают. Поэтому ДМА может не успеть записать очередной байт в регистр передачи. Что тогда будет? В Apтём(31 знак., 19.07.2013 18:42)
- под циклом передачи в данном случае, я имею в виду передачу ОДНОГО байта или 16 битового слова, в зависимости от настроек SPI - nanorobot(19.07.2013 18:35)
- правильнее всего будет так: передача каждого байта пакета будет сопровождаться установкой/снятием сигнала NSS - nanorobot(20.07.2013 19:17)
- Спасибо за комментарий, но это я задаю вопросы в данном топике :) Я не работаю с МК STM32 и знаком с этой продукцией лишь "шапочно", посредством чтения документации. - rezident(19.07.2013 17:53)
- "driven low if the SPI is in master configuration". Если нужно без прерываний, то Slave Select должен генерить таймер. Другие варианты не просматриваются. - SciFi(19.07.2013 17:39)
- Можно в двух словах объяснить алгоритм работы таймера для такого режима, чтобы я также "на пальцах" смог передать его смысл коллеге? Таймер он уже использует для начала передачи по SPI. - rezident(19.07.2013 17:48)
- Самое простое - это на том же таймере настроить свободный канал на режим ШИМ, и вывести его на цепь Slave Select. - SciFi(19.07.2013 17:51)
- А как DMA при таком способе формирования SS задействовать? - rezident(19.07.2013 17:54)
- Тот же таймер может вырабатывать запрос DMA. А ещё таймеры можно каскадировать самым причудливым образом (один запускается от другого и т.п.): так сильно повышается гибкость (но и сложность). SciFi(232 знак., 19.07.2013 18:07)
- Спасибо. Попробую предложить такой способ коллеге. - rezident(19.07.2013 18:12)
- Тот же таймер может вырабатывать запрос DMA. А ещё таймеры можно каскадировать самым причудливым образом (один запускается от другого и т.п.): так сильно повышается гибкость (но и сложность). SciFi(232 знак., 19.07.2013 18:07)
- А как DMA при таком способе формирования SS задействовать? - rezident(19.07.2013 17:54)
- Самое простое - это на том же таймере настроить свободный канал на режим ШИМ, и вывести его на цепь Slave Select. - SciFi(19.07.2013 17:51)
- Можно в двух словах объяснить алгоритм работы таймера для такого режима, чтобы я также "на пальцах" смог передать его смысл коллеге? Таймер он уже использует для начала передачи по SPI. - rezident(19.07.2013 17:48)
- обычно управляю NSS вручную - koyodza(19.07.2013 17:33)
- Я дополнил сообщение, пояснив, зачем это нужно. - rezident(19.07.2013 17:35)
- нужно выдать один длинный NSS на всё время посылки, начало всего этого безобразия стартует по таймеру? koyodza(702 знак., 19.07.2013 18:15)
- Если не ошибаюсь, то так (DMA от SPI, начало работы по таймеру) уже пробовали - не работает. SciFi уже обозначил причину - NSS в режиме master всегда в активном состоянии пока SPI включен. - rezident(19.07.2013 18:20)
- тип АЦП на всякий случай озвучьте, количество данных и желаемую периодичность опроса - koyodza(19.07.2013 18:29)
- там есть ручное управление NSS, именно его я и использовал koyodza(125 знак., 19.07.2013 18:27)
- Ручное управление не устраивает. Тип АЦП сейчас не могу уточнить, только в понедельник. Особенность его в том, что по срезу (деактивации) CS у АЦП запускается преобразование с теми параметрами, что были заданы в посылке SPI. - rezident(19.07.2013 18:32)
- Если не ошибаюсь, то так (DMA от SPI, начало работы по таймеру) уже пробовали - не работает. SciFi уже обозначил причину - NSS в режиме master всегда в активном состоянии пока SPI включен. - rezident(19.07.2013 18:20)
- нужно выдать один длинный NSS на всё время посылки, начало всего этого безобразия стартует по таймеру? koyodza(702 знак., 19.07.2013 18:15)
- Я дополнил сообщение, пояснив, зачем это нужно. - rezident(19.07.2013 17:35)
- У STM32F05 в SPIx_CR2 есть битик NSSP, взведение которого заставляет SPI дергать NSS при каждом цикле передачи. Очень удобно при использовании DMA. м.б. и у F4xx что-то подобное есть. - nanorobot(19.07.2013 17:45)