代码之家  ›  专栏  ›  技术社区  ›  onaclov2000

与PIC 16F913通信

  •  2
  • onaclov2000  · 技术社区  · 14 年前

    这里是我的问题,似乎所有的PIC16F913的通信线路都位于同一组插脚上,这很方便,因为我不需要牺牲GPIO插脚来做通信,但是我现在的问题是,如果我在芯片上使用SPI,我如何向RS232发送信息?

    之所以出现这个问题,是因为我刚买了一个通过SPI通信的CAN总线芯片,我真的很想看到RS232上的数据,所以我可以看到消息。(我真的还不太了解can,所以谁知道这是否有意义呢)。

    以下是我看到的选择,也许其他人有更好的想法,我只是错过了。

    1. 以某种方式设置一个时间方案,每次我得到数据时,它将在SPI和RS232之间切换,

    --这看起来不难,应该可以,但是假设我不想错过一条消息,如果在我写RS232的时候写了一条消息,我会错过它吗?

    2…我可以一直使用SPI,但随后在8条GPIO线路上建立自己的通信总线,到另一个PIC16F913,只使用GPIO线路,然后由于第二张PIC上的RS232线路是免费的,所以我可以简单地读取数据并将其吐出。

    --这是可行的,但现在我们浪费了2个芯片和所有的GPIO线路,

    必须有更好的方法。还是在那里?

    非常感谢您的帮助。

    更新:我想澄清的是,显然有一个解决方案是使用完全不同的芯片(如果我能对18F进行编程,这可能是我最终要做的),但是,我对最坏的情况很感兴趣,在最坏的情况下,我的资源有限,只有一些913,这是上面描述的使用该芯片的唯一方法,或者是有更好的方法吗?

    3 回复  |  直到 14 年前
        1
  •  4
  •   peter_mcc    14 年前

    您可以对SPI总线进行软件实现——这比UART更容易实现,因为时间并不关键,您可以控制它。

    大多数CAN芯片都有一些接收缓冲器,因此,如果您正忙于使用UART,那么消息将被缓冲在CAN芯片中。但是…您需要确保能够快速/经常地从CAN芯片中获取信息,这样就不会丢失一些信息。

    您可能必须为UART TX过程使用一个中断,以便在UART上发送数据时能够接收到CAN消息。

    如果你只对某些信息感兴趣,大多数的芯片都会有过滤器——这使得你很容易只接收你感兴趣的信息,通常会大大减少每秒的包数。

        2
  •  1
  •   jcoder    14 年前

    您可以使用RS232端口的软件实现。例如,C编译器来自 http://mikroe.com 有这样一个图书馆。但将位转换到输出端不应该太难,RS232是一个相当简单的协议。

        3
  •  0
  •   GJ.    14 年前

    我强烈建议您使用pic16f1933更换MCU。

    1. 它是新的
    2. 它是削片机。
    3. 带euart和mssp模块。
    4. 对单片机硬件结构进行了改进。

    pic16f913微控制器将在未来几年内过时!