По просьбе ув. @AleksandR размещаю краткое описание принципа работы входного тракта прибора.
Я так понимаю, у Александра вызывает некоторые трудности и непонимание наличие в схеме управляемых контроллером так называемых цифровых потенциометров DA2. DA7.
Начну с того, что скажу, что по сути их наличие ничем не делает этот схемный узел чем-то "эдаким", кроме как, собственно, возможностью "крутить" эти потдстроечники программно. Если открыть даташит на серию этих чипов, ты первое на что стоит обратить внимание, что они все имеют 256 уровней регулирования. Надеюсь не нужно объяснять почему эти потенциометры не регулируют плавно, а именно ступенчато и у них 256 отсчётов?
Дальше даташит говорит нам, что они бывают аж 3х вариантов по сопротивлению:
цитата
Нам это не важно. У нас используется один 10К-ный (DA2) резистор , а другой 100К-ный (DA7).
Если опустить всякие там мощности потребления, точность позиционирования и прочую ерунду, то следующее на что нужно обратить внимание и что является одним из основных - тип интерфейса с процессором. Он здесь - SPI ( Serial Peripheral Interface ).
SPI - стандартный последовательный высокоскоростной интерфейс взаимодействия между элементами микропроцессорных систем.
Его спецификацию легко найти на просторах интернет. Не буду описывать. ( Для интереса скажу - именно из-за него и возник конфликт у меня и у известного "гуру" известного форума по кличке swarog2. Точнее из-за того, что я пытался культурно на сколько мог вправить мозги человеку, который вообще не понимал что это такое и с чем его едят. Зато пытался учить других при этом оскорбляя меня. В общем в результате я там в бане.
Это если сильно кратко. Впрочем, я сильно отвлёкся, простите меня. ) Итак, чтобы понимать работу узла вцелом - вовсе не нужно знать прицип и спецификацию работы интерфейса SPI этой серии потенциометров и их взаимодействия с контроллером по этой шине. Представьте, просто для простоты, что там стоят обычные резисторы, которые вы или контроллер, или всё равно кто, крутит руками. На принцип это никак не влияет. Важно только помнить, что управление ими всё же лежит в "руках" микроконтроллера.
Если всё же нужно кратко кому-то объяснить: ну как же всё-таки происходит установка того или иного значения сопротивления резистора, то вкратце поясню. Обе микросхемы и DA2, и DA7 "сидят" на одной и той же шине SPI, то есть они физически подключены к одним и тем же выводам микроконтроллера: MISO (Master Input Slave Output - вход мастера/выход подчинённого, MOSI (Master Output Slave Input - выход мастера/вход подчинённого), SCK ( Slave Clock - тактовый ) ну и сигналы выбора подчинённой микросхемы ( или CS - Chip Select - выбор микросхемы ). Входы MISO, MOSI и SCK, естественно, являются общими для всех подчинённых устройств, а тот факт какую из подчинённых микросхем включить в данный момент для обмена по шине как раз-таки и определяется сигналом выбора микросхемы (CS). Итак, в любой и в каждый момент времени доступно только одно устройство ( микросхема ) для обмена информацией по шине SPI. Иными словами на SPI шине запрещены одновременно несколько передающих микросхем. На шине SPI "говорит" ВСЕГДА ТОЛЬКО ОДНО SPI-устройство !!! Это важно понимать !!! Ситуация, когда передатчика по каким либо причинам становится два и/или более является по определению недопустимой! Это запрещено SPI спецификацией! Также SPI спецификация определяет одно и только ОДНО ГЛАВНОЕ (Master) устройство! (Как оказалось - это не верно. Читать ниже.) Двух Master'ов на SPI шине одновременно быть НЕ ДОЛЖНО !!! Это запрещено! (Ещё раз - сейчас уже НЕТ !!! ) Иначе во всех этих случаях, как мы понимаем, мы получаем сразу же конфликтные ситуации на разделяемой всеми устройствами одной физической шине. Всегда в сеансе обмена участвуют только ОДИН МАСТЕР и ОДИН или БОЛЕЕ ПОДЧИНЁННЫХ. При этом вполне допустимо, когда "говорит" один мастер, а "слушают" все подчинённые. Потоком данных управляет ТОЛЬКО МАСТЕР ! Подчинённые потоком данных не управляют! На то они и подчинённые. Они либо "слушают" (получают) команды и данные, либо выдают на шину SPI по линии MISO данные для МАСТЕРА ( в нашем случая для контроллера ) при этом каждая только в своё определяемое контроллером время путём включения подчинённого чипа установкой низкого уровня на ножке CS ( или ещё иногда её называют SS - Slave Select - выбор подчинённого). То есть контроллер ( МАСТЕР ) всегда сам определяет с каким именно подчинённым устройством на своей SPI шине он сейчас будет обмениваться информацией. Итак, Какая именно из микросхем DA2 или DA7 будет участвовать в обмене данными - "решает" наш контроллер, выставляя активный низкий логически уровень на соответствующих ножках ( в нашем случае это CS1 - для DA7 и CS2 для DA2 ). Ну, а дальше всё просто. Есть тактовый сигнал, есть данные, которые контроллер "пихает" бит за битом (последовательно и побитно) с каждым тактовым сигналом в резисторы, есть комманды шины SPI, которыми манипулирует программа, написанная автором, а также необходимые данные для занесения во внутренние регистры хранения потенциометров. Записали значение такое -то резистор отработал и хранит его до следующей записи или команды сброс. Команды, которые "понимают" эти резисторы можно посмотреть в даташите на них. Описывать нет необходимости и это вообще не важно для понимания работы узлов.
С SPI - всё!
.....
Думал, что всё... Но ... Поискал нормальную литературу по SPI интерфейсу и даже для себя сделал некоторое небольшое открытие.
SPI интерфейс тоже развивается. И пока я знал его 20 летней давности, он уже вырос из своих "штанишек" и вполне себе сейчас допускает использование в системе НЕСКОЛЬКИХ МАСТЕРОВ. Не стану ничего менять по тексту, но этот момент прошу всех вас помнить и понимать. Как это реализовывается в реальных системах описано под спойлеором. Это цитата из источника, который я привожу всем нам и прошу его прочесть всех для общего, так сказать, развития. Чтобы потом не городить полный бред, как это делал товарищ swarog2, опираясь на статьи из wiki. Лично я НЕ рекомендую пользоваться википедией для постижения истины. В wiki-педии зачастую можно прочитать такой бред, что и на голову не натянешь. Это относится и к статье об SPI. В википедии там написано много того, чего нет на самом деле и близко. Видать, её писал такой же чувак, как и я, только ещё с меньшим багажом знаний. Наверное типа swarog2 - это его уровень.
Не берите пример с подобного... Лучше найти академические источники или ещё лучше - первоисточники, спецификации, описания от производителя и т.п. Все эти википедии - полный алес!
Кстати, стоит заметить , что SPI - шина универсальная и всё то, что я описал очень кратко сейчас для резисторов точно также работает и для LED экранов с интерфейсом SPI, энергонезависимой памяти, часов реального времени (RTC - Real Time Clock), PGA ( Programmable Gain Amplifier - усилители с программируемым коэффициентом усиления), и для всего чего угодно. Устройств с интерфейсом SPI в природе - просто "миллиард и ещё вот столько!"
Кстати, один из типов PGA, как мы знаем, применён автором Фортун в версии прибора "Фортуна-S" (PGA - MCP6S21).
Теперь пойдём дальше...
Я так понимаю, у Александра вызывает некоторые трудности и непонимание наличие в схеме управляемых контроллером так называемых цифровых потенциометров DA2. DA7.
Начну с того, что скажу, что по сути их наличие ничем не делает этот схемный узел чем-то "эдаким", кроме как, собственно, возможностью "крутить" эти потдстроечники программно. Если открыть даташит на серию этих чипов, ты первое на что стоит обратить внимание, что они все имеют 256 уровней регулирования. Надеюсь не нужно объяснять почему эти потенциометры не регулируют плавно, а именно ступенчато и у них 256 отсчётов?
Дальше даташит говорит нам, что они бывают аж 3х вариантов по сопротивлению:
цитата
Итого, 10К, 50К и 100К. Всё. Других в этой серии не ищите.Potentiometer values for 10 kΩ, 50 kΩ and 100 kΩ
Нам это не важно. У нас используется один 10К-ный (DA2) резистор , а другой 100К-ный (DA7).
Если опустить всякие там мощности потребления, точность позиционирования и прочую ерунду, то следующее на что нужно обратить внимание и что является одним из основных - тип интерфейса с процессором. Он здесь - SPI ( Serial Peripheral Interface ).
SPI - стандартный последовательный высокоскоростной интерфейс взаимодействия между элементами микропроцессорных систем.
Его спецификацию легко найти на просторах интернет. Не буду описывать. ( Для интереса скажу - именно из-за него и возник конфликт у меня и у известного "гуру" известного форума по кличке swarog2. Точнее из-за того, что я пытался культурно на сколько мог вправить мозги человеку, который вообще не понимал что это такое и с чем его едят. Зато пытался учить других при этом оскорбляя меня. В общем в результате я там в бане.
Если всё же нужно кратко кому-то объяснить: ну как же всё-таки происходит установка того или иного значения сопротивления резистора, то вкратце поясню. Обе микросхемы и DA2, и DA7 "сидят" на одной и той же шине SPI, то есть они физически подключены к одним и тем же выводам микроконтроллера: MISO (Master Input Slave Output - вход мастера/выход подчинённого, MOSI (Master Output Slave Input - выход мастера/вход подчинённого), SCK ( Slave Clock - тактовый ) ну и сигналы выбора подчинённой микросхемы ( или CS - Chip Select - выбор микросхемы ). Входы MISO, MOSI и SCK, естественно, являются общими для всех подчинённых устройств, а тот факт какую из подчинённых микросхем включить в данный момент для обмена по шине как раз-таки и определяется сигналом выбора микросхемы (CS). Итак, в любой и в каждый момент времени доступно только одно устройство ( микросхема ) для обмена информацией по шине SPI. Иными словами на SPI шине запрещены одновременно несколько передающих микросхем. На шине SPI "говорит" ВСЕГДА ТОЛЬКО ОДНО SPI-устройство !!! Это важно понимать !!! Ситуация, когда передатчика по каким либо причинам становится два и/или более является по определению недопустимой! Это запрещено SPI спецификацией! Также SPI спецификация определяет одно и только ОДНО ГЛАВНОЕ (Master) устройство! (Как оказалось - это не верно. Читать ниже.) Двух Master'ов на SPI шине одновременно быть НЕ ДОЛЖНО !!! Это запрещено! (Ещё раз - сейчас уже НЕТ !!! ) Иначе во всех этих случаях, как мы понимаем, мы получаем сразу же конфликтные ситуации на разделяемой всеми устройствами одной физической шине. Всегда в сеансе обмена участвуют только ОДИН МАСТЕР и ОДИН или БОЛЕЕ ПОДЧИНЁННЫХ. При этом вполне допустимо, когда "говорит" один мастер, а "слушают" все подчинённые. Потоком данных управляет ТОЛЬКО МАСТЕР ! Подчинённые потоком данных не управляют! На то они и подчинённые. Они либо "слушают" (получают) команды и данные, либо выдают на шину SPI по линии MISO данные для МАСТЕРА ( в нашем случая для контроллера ) при этом каждая только в своё определяемое контроллером время путём включения подчинённого чипа установкой низкого уровня на ножке CS ( или ещё иногда её называют SS - Slave Select - выбор подчинённого). То есть контроллер ( МАСТЕР ) всегда сам определяет с каким именно подчинённым устройством на своей SPI шине он сейчас будет обмениваться информацией. Итак, Какая именно из микросхем DA2 или DA7 будет участвовать в обмене данными - "решает" наш контроллер, выставляя активный низкий логически уровень на соответствующих ножках ( в нашем случае это CS1 - для DA7 и CS2 для DA2 ). Ну, а дальше всё просто. Есть тактовый сигнал, есть данные, которые контроллер "пихает" бит за битом (последовательно и побитно) с каждым тактовым сигналом в резисторы, есть комманды шины SPI, которыми манипулирует программа, написанная автором, а также необходимые данные для занесения во внутренние регистры хранения потенциометров. Записали значение такое -то резистор отработал и хранит его до следующей записи или команды сброс. Команды, которые "понимают" эти резисторы можно посмотреть в даташите на них. Описывать нет необходимости и это вообще не важно для понимания работы узлов.
С SPI - всё!
.....
Думал, что всё... Но ... Поискал нормальную литературу по SPI интерфейсу и даже для себя сделал некоторое небольшое открытие.
SPI интерфейс тоже развивается. И пока я знал его 20 летней давности, он уже вырос из своих "штанишек" и вполне себе сейчас допускает использование в системе НЕСКОЛЬКИХ МАСТЕРОВ. Не стану ничего менять по тексту, но этот момент прошу всех вас помнить и понимать. Как это реализовывается в реальных системах описано под спойлеором. Это цитата из источника, который я привожу всем нам и прошу его прочесть всех для общего, так сказать, развития. Чтобы потом не городить полный бред, как это делал товарищ swarog2, опираясь на статьи из wiki. Лично я НЕ рекомендую пользоваться википедией для постижения истины. В wiki-педии зачастую можно прочитать такой бред, что и на голову не натянешь. Это относится и к статье об SPI. В википедии там написано много того, чего нет на самом деле и близко. Видать, её писал такой же чувак, как и я, только ещё с меньшим багажом знаний. Наверное типа swarog2 - это его уровень.
Не берите пример с подобного... Лучше найти академические источники или ещё лучше - первоисточники, спецификации, описания от производителя и т.п. Все эти википедии - полный алес!
Не дивлячись на те, що базова версія інтерфейсу SPI розроблена для
мікроконтроллерних систем з одним ведучим, можливий все ж режим мережі
з багатьма ведучими. Прапор MODF (SPIOCN.5 - Mode Fault flag)
встановлюється в логічну одиницю, якщо інтерфейс визначений як ведучий
(MSTEN=1) і вивід NSS переведений в низький логічний рівень, тобто SPI
інтерфейс намагаються використовувати як ведений. Якщо при цьому
встановлений прапор MODF, біти MSTEN і SPIEN в регістрі управління SPI
скидаються апаратно, переводячи інтерфейс в автономний стан. Таким
чином, в системі з багатьма ведучими, ядро може визначити чи вільна шина
шляхом опиту прапора SLVSEL (SPIOCN.2) перед тим, як встановити
MSTEN прапор (тобто визначити інтерфейсу режим ведучого) і
ініціалізувати обмін.
Полный текст можно взять здесь Описание SPI интерфейса там найдёте на странице 15.
Лично я забрал данный конспект лекций себе. Буду также освежать в башке всякую всячину, а может что-то и новое почерпну.
В общем, не помешает.
мікроконтроллерних систем з одним ведучим, можливий все ж режим мережі
з багатьма ведучими. Прапор MODF (SPIOCN.5 - Mode Fault flag)
встановлюється в логічну одиницю, якщо інтерфейс визначений як ведучий
(MSTEN=1) і вивід NSS переведений в низький логічний рівень, тобто SPI
інтерфейс намагаються використовувати як ведений. Якщо при цьому
встановлений прапор MODF, біти MSTEN і SPIEN в регістрі управління SPI
скидаються апаратно, переводячи інтерфейс в автономний стан. Таким
чином, в системі з багатьма ведучими, ядро може визначити чи вільна шина
шляхом опиту прапора SLVSEL (SPIOCN.2) перед тим, як встановити
MSTEN прапор (тобто визначити інтерфейсу режим ведучого) і
ініціалізувати обмін.
Полный текст можно взять здесь Описание SPI интерфейса там найдёте на странице 15.
Лично я забрал данный конспект лекций себе. Буду также освежать в башке всякую всячину, а может что-то и новое почерпну.
В общем, не помешает.
Теперь пойдём дальше...
Останнє редагування:


