Общение с Pic 16F913 - PullRequest
       67

Общение с Pic 16F913

2 голосов
/ 18 июля 2010

Вот моя проблема, кажется, что все линии связи для PIC 16F913 находятся на одном и том же наборе контактов, это удобно тем, что мне не нужно жертвовать контактами GPIO только для того, чтобы сделать связь, однако проблема, которую я у меня сейчас, если я использую SPI на чипе, как я могу отправить информацию на RS232?

Причина, по которой возникла эта проблема, заключается в том, что я купил микросхему шины CAN, которая обменивается данными через SPI, и мне очень хотелось бы увидеть данные на RS232, чтобы я мог видеть сообщения. (Я действительно пока мало знаю о CAN, так что кто знает, имеет ли это смысл).

Вот варианты, которые я вижу, и, может быть, у кого-то есть идеи получше, которых мне просто не хватает.

  1. Каким-то образом настроить временную схему, которая будет переключаться между SPI и RS232 каждый раз, когда я получаю данные,

- Это не сложно и должно работать, но, если я не хочу пропустить сообщение, что если сообщение пишется во время записи на RS232, возможно, я его пропущу?

2 .. Я всегда могу использовать SPI, но затем построить свою собственную шину связи по 8 линиям GPIO к другой PIC 16F913, используя только линии GPIO, а затем, так как линии RS232 свободны на второй PIC, я могу просто прочитайте данные и выложите их.

- Это выполнимо, но теперь мы тратим 2 чипа И все линии GPIO,

Должен быть лучший способ. Или есть?

Любая помощь очень ценится.

Обновление: я хотел бы уточнить, очевидно, одно из решений заключается в использовании совершенно другого чипа (что на самом деле может быть тем, что я в итоге делаю, если я могу запрограммировать 18F), однако меня интересует худший случай Сценарий, в котором я ограничен в ресурсах и имею только несколько 913, является ли описанный выше способ единственным способом сделать это с этим чипом, или есть лучший способ?

Ответы [ 3 ]

4 голосов
/ 19 июля 2010

Вы можете сделать программную реализацию шины SPI - это проще, чем UART, потому что время не критично, и вы управляете им.

Большинство микросхем CAN имеют несколько приемных буферов, поэтому, если вы заняты чем-то с UART, то сообщения будут помещаться в буфер внутри микросхемы CAN. Но ... вам нужно убедиться, что вы можете получать сообщения из микросхемы CAN достаточно быстро / достаточно часто, чтобы не потерять их.

Возможно, вам придется использовать прерывание для процесса UART Tx, чтобы вы могли получать сообщения CAN во время отправки данных по UART.

Если вас интересуют только определенные сообщения, у большинства микросхем CAN есть фильтры - это позволяет легко получать только те сообщения, которые вас интересуют, обычно резко снижая количество пакетов в секунду.

1 голос
/ 19 июля 2010

Вы можете использовать программную реализацию порта RS232. Например, компилятор c из http://mikroe.com поставляется с такой библиотекой. Но не должно быть слишком сложно перенести биты на выходной контакт, rs232 - довольно простой протокол.

0 голосов
/ 19 июля 2010

Я настоятельно рекомендую вам заменить MCU на PIC16F1933.

  1. Это более новое
  2. Это дробилка
  3. С модулями EUART и MSSP.
  4. Архитектура MCU нарушена.

Микроконтроллер PIC16F913 устареет в ближайшие несколько лет!

...