Перейти к содержанию
    

RS-485 на AT91SAM7X256

Добрый день.

В настоящий момент осваиваю МК AT91SAM7X256, который был выбран в качестве основы для разработки системы управления.

В наличии имеется отладочный комплект AS-SAM7X от Аргуссофта.

Столкнулся с проблемой, что никак не получается "завести" работу по протоколу RS-485. Драйвер 485-го на плате установлен (ADM348). С 485-м интерфейсом успешно работал на других контроллерах. С 232-м интерфейсом (и через USART и через DBGU) проблем не возникло. Да и вообще пока ни с чем проблем не возникало в освоении данного МК. А тут не удается ни принять, ни передать хоть одного байта. К тому же смущает наличие некоего режима AT91C_US_USMODE_RS485. Вот и не могу понять, толи я неправильно что-то делаю, толи это аппаратная проблема конкретного экземпляра платы.

Не поможет ли кто-либо с примером, содержащим однозначно работающий код для AT91? Неважно X это или S. Разберусь.

Мой мыл: sailor{собака}konver.ru

С уважением.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работать в режиме 485 интерфейса в эитх контроллерах уч удобно.

Режим AT91C_US_USMODE_RS485 включает аппаратное управление через ногу RTS переключением режима прием/передача. Просто соедените ногу RTS со входами DE-RE ADM348.

И будет Вам счастье

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работать в режиме 485 интерфейса в эитх контроллерах уч удобно.

Режим AT91C_US_USMODE_RS485 включает аппаратное управление через ногу RTS переключением режима прием/передача. Просто соедените ногу RTS со входами DE-RE ADM348.

И будет Вам счастье

Нога сия соединена. Мне нужен пример правильной инициализации и дальнейшей работы по данному протоколу для данного девайса. Или заработает или нет. Я вот тоже подумал, что предусматривается в режиме AT91C_US_USMODE_RS485 аппаратное управление по дефаулту. Но данные не передаются. Возможен аппаратный глюк. У меня всего один девайс и собственаручно написанный код. Так что или железо или моя голова. Но как мне определиться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В прикрепленном файле простейшая программа

Один канал -RS232 второй - RS485

Передаются данные из одного канала в другой

И обратно

Работает

main_RBT.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В прикрепленном файле простейшая программа

Один канал -RS232 второй - RS485

Передаются данные из одного канала в другой

И обратно

Работает

Огромное спасибо за присланный материал. Я на почту уже написал, что в выложенном файле нет описания инициализации PIO. В остальном принципиальном отличий в коде не обнаружил.

Но проблема решена. Вы будете смеяться, все оказалось в моей голове. Я перепутал нумерацию контактов на разъеме. В документации и на девайсе первая нога обозначена не была. А я с чего-то решил, что нумерация должна быть именно такой-то, и до последнего момента даже не возникало мысли усомниться в этом :)

Сорри всем за беспокойство. *тупо бьется головой об стол, предварительно отодвинув в сторону девайс*

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

{
    AT91PS_USART COM0 = AT91C_BASE_US0; // USART0
    
    AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,
        ((U32) AT91C_PA0_RXD0 ) |
        ((U32) AT91C_PA1_TXD0 ) |
        ((U32) AT91C_PA3_RTS0 ),  /// < ---- Обязательно (RTS соединить с notRE/DE драйвера 485) 
        0); 

    // Enable USART clock
    AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US0 );
    
    // Usart Configure
    AT91F_US_Configure (COM0, AT91B_MCK, AT91C_US_ASYNC_MODE | AT91C_US_USMODE_RS485, 115200, 0);

    // Enable usart
    COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
    COM0->US_TTGR = 0x04; // 4-bits time-guard for rs485
....

Все остальное (в т.ч. обработчик перывания) как у 232-го.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...