创客空间

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 948|回复: 0

PJON Arduino 通讯总线方案

[复制链接]

8

主题

85

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2017-7-26 13:00:35 | 显示全部楼层 |阅读模式

PJON (Padded Jittering Operative Network) 是一个简单的连线、多 master 通讯总线系统。是 i2c 、1-Wire、串口以及其他 Arduino 兼容协议的替代方案。

特性

  • 单个物理层连接,可支持高达 50 个节点

  • 实现了设备编码来支持高达 254 个设备通讯

  • 循环冗余校验 (CRC).

  • 确保数据包发送的正确

  • 多 master 支持中的避免冲突

  • 提供广播功能

  • 包管理机制来跟踪和重新发送失败的数据包发送

  • 错误处理

性能

  • 传输速率: 32256 baud/s or 4.32kB/s

  • 带宽: 2.7kB/s

  • 精确度: 99.95%

兼容性

  • Arduino Diecimila / Duemilanove

  • Arduino Mini

  • Arduino Uno

  • Arduino Nano

  • Arduino Mega

示例代码:

#include <JON.h>     // Transmitter board code
PJON network(12, 45); // Bus connection to pin 12, device id 45

void setup() {
  network.send(44, "B", 1, 1000000); 
  // Send to device 44, "B" content of 1 byte length every 1000000 microseconds (1 second)
}

void loop() {
  network.update();
}

/* ---------------------------------------------------------------------------- */

#include <JON.h>     // Receiver board code
PJON network(12, 44); // Bus connection to pin 12, device id 45

void setup() {
  network.set_receiver(receiver_function); // Set the function used to receive messages
};

static void receiver_function(uint8_t length, uint8_t *payload) {
  if(payload[0] == 'B') { // If the first letter of the received message is B 
    digitalWrite(13, HIGH);
    delay(30);
    digitalWrite(13, LOW);
  }
}

void loop() {
  network.receive(1000);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|创客空间

GMT+8, 2024-11-27 08:33 , Processed in 0.011322 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表