разбираюсь с MRF49xa
|
|
tesla88 |
Дата: Пт, 14.03.2014, 00:15 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
114
Замечания:
±
На сайте с 20.11.2010
Статус:
Offline
|
Всем доброго времени суток! собрал я тут на днях сей девайс - http://vrtp.ru/index.php?act=categories&CODE=article&article=2777 , работает прекрасно но я преследую иную цель, а именно научиться работать с микросхемой mrf49xa, и вот тут гора проблем - трансивер общается с контроллером по spi интерфейсу(который мне практически не знаком), я залез в манцалы и понял что на трансивер необходимо отправлять стартовую конфигурацию , но как это сделать примеров негде не нашёл, речь идёт конкретно о примерах на протон, может кто работал с данной микросхемой и может поделиться опытом? к слову по spi я понял , что необходимо использовать команду shin и shout ( Shin DTA, CLK, MsbPre, [Var1] ) - но вот как трансиверу передать 16 бит конфигурации в определённый регист при помощи этой команды я так и не понял?
|
|
|
|
ivan_fd |
Дата: Пт, 14.03.2014, 11:19 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Посмотрите вот эти исходники. Правда они на С, но там все понятно.
А передать 16 бит. Если посмотреть документацию на PROTON:
Shout DTA, CLK, MsbFirst, [250\4] - красным выделено количество бит передаваемое по SPI.
|
|
|
|
tesla88 |
Дата: Пт, 14.03.2014, 14:58 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
114
Замечания:
±
На сайте с 20.11.2010
Статус:
Offline
|
Прошу прощения если вопрос глупый, но я не имел опыта с spi, интересует сам способ передачи настроек из пика в mrf49xa, ведь как я понимаю - у передатчика (приёмника) есть регистры конфигурации которые имеют свои адреса и собственно сами 16 бит конфигурации, то есть мне надо обращаться к конкретному адресу (регистру) и передавать ему настройку, но данный пример показывает просто передачу данных а не обращение к какому либо регистру -" Shout DTA, CLK, MsbFirst, [250\4] ", мне бы просто увидеть живой пример ( в протоне ) передачи и приёма контроллером.
|
|
|
|
MiXaS |
Дата: Пт, 14.03.2014, 18:38 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Все очень просто! Смотрите даташит, там есть временные диаграммы, сразу станет многое понятно. spi отличается от остальных интерфейсов еще и тем, что имеет вывод селект слэйв.Если у Вас допустим несколь слэйвов, то шина данных и тактов подключается параллельно ко всем устройствам, а мастер потом с помошью селект слэйв выбирает конкретную микросхему. вот хорошее описание http://www.gaw.ru/html.cgi/txt/interface/spi
так вот, чтобы Вашему трансиверу что–то сказать в конктерный регистр, сначало нужно селект слэйв прижать к земле, потом говорить Shout DTA, CLK, MsbFirst, [Конкретный регистр, значение конкретного регистра] и опять поднять вверх селект слэйв. Вам обязательно нужно внимательно прочитать шит, потому как скорее всего такие трансиверы перед инициализацией требуют обряд сброса. а потом инизиалазация.
|
|
|
|
tesla88 |
Дата: Пт, 14.03.2014, 19:15 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
114
Замечания:
±
На сайте с 20.11.2010
Статус:
Offline
|
Большое спасибо MiXaS , буду разбираться, честно говоря не совсем пойму как правильно выставлять моды ( MsbFirst ) на стороне мастера и слэйва?
Сообщение отредактировал
tesla88 - Пт, 14.03.2014, 19:34
|
|
|
|
MiXaS |
Дата: Пт, 14.03.2014, 21:54 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата tesla88 ( ) моды ( MsbFirst ) на стороне мастера и слэйва?
Вы настраиваете шину только мастера. Слэйв это ваш трансмитер. Чтобы понять какой режим Вам нужен нужно посмотреть шит. То есть нужно смотреть на временную диаграмму, там будет видно какой бит идет первый (старший или младший), потом такты начинаются с низкого или высогоко уровня. Мне в этом вопросе помогла книга Владимира Хилинского «Учимся программировать микроконтроллеры pic на языке picbasicpro». Прошу прощения если неправильно написал, пишу на память. Так вот там идет описание команды shiftout и по поводу режимов достаточно подробно описано, я проверял с описанием протона все совпадает. Из личного опыта(цап, ацп, трансмитеры, max7221...) на всем, что мне попадалось режим один и тот же MsbFirst. Но для полного понимания, рекомендую открыть книгу в одном окне, диаграму в другом, читать описание и смотреть на диаграмму, сразу станет все ясно. Страшен не spi, а как правильно отконфигурить приемник под передатчик, потом поменять их местами.
|
|
|
|
tesla88 |
Дата: Ср, 19.03.2014, 11:58 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
114
Замечания:
±
На сайте с 20.11.2010
Статус:
Offline
|
Для начала я решил связать два пика по spi, но тут возник ряд проблем, мастер отправляет данные как положено, а вот слэйв ведёт себя не адекватно, и непонятно то ли это глюк протеуса толи мой, ниже прилагаю преэкт в протоне и фаил протеуса, но суть такова - как только слэйв видит на линии cs логическую 1 начинает отправлять мастеру синхро импулься причём с совершенно другой частотой , ну и как следствие получается полная каша, причём на всех линиях связи. Я уже по десять раз перечитал книги и мануалы , вроде бы всё правильно , но работать отказывается Добавлено (19.03.2014, 11:58) --------------------------------------------- Дорогие коллеги! прошу вас обратить внимание на предпоследний пост, очень нужен ваш ценный совет!!!
Сообщение отредактировал
tesla88 - Вс, 16.03.2014, 16:21
|
|
|
|
ivan_fd |
Дата: Чт, 20.03.2014, 00:18 | Сообщение # 8 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Если Вам очень хочется связать два PIC по SPI, то я бы Вам советовал воспользоватся встроенным, в контроллер, модулем SPI. А с командами программного SPI у Вас ничего хорошего не получится.
|
|
|
|
MiXaS |
Дата: Чт, 20.03.2014, 01:00 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Да, я тоже пробовал, чет не пролезло. Вы сразу лучше на ресивер шлите. :-)
|
|
|
|