0

我想将多个信号(4 个输入和输出以及 7 个输出)从我的笔记本电脑发送到微控制器。我正在考虑使用 USB 到串行转换器并通过端口多路复用数据。我需要在笔记本电脑端和微控制器中编写代码来复用数据。

例如:微控制器的 Tx:1.温度传感器 ADC 输出->笔记本电脑 2.电压传感器到笔记本电脑 3.电流传感器到笔记本电脑 4.光电二极管电流到笔记本电脑

所以我需要在微控制器中编写一个程序来按这个顺序发送数据。我怎样才能做到这一点?我在想一个无限循环,它发送数据之间有时间延迟。

在微控制器的 Rx 引脚上,

七位序列。每个位序列将用于设置微控制器生成的 PWM 的占空比。

我还需要在 matlab 端进行相同的多路复用或多路分解安排。在这里,我也在考虑在不同的时刻分配一些虚拟“频道”。我需要什么样的算法?

4

1 回答 1

0

如果您总是以相同的速率发送所有输入/输出,您可以简单地将它们打包成“数据包”,这些数据包总是以一个或多个具有固定值的字节开始,形成一个“数据包头”。唯一的风险是,当您尝试开始接收字节并且尚未同步时,传感器数据的字节之一可能与起始字节具有相同的值。您可以通过使标头更长,或者通过选择一个对于传感器非法输出的起始字节(通常是 OxFF 左右)来降低这种风险。

微控制器上的发送循环非常简单(伪代码):

while True:
    measure_sensors()
    serial.send(START_BYTE)
    serial.send(temperature)
    serial.send(voltage)
    serial.send(current)
    serial.send(photodiode)
end while

接收循环有点棘手,因为它需要先同步:

while True:
    data = serial.receive()
    if data != START_BYTE:
        print 'not synced'
        continue #restart at top of while
    end if
    temperature = serial.receive()
    voltage = serial.receive()
    current = serial.receive()
    photodiode = serial.receive()
    do_stuff_with_measurements()
end while

这种相同的方案可用于双向通信。

于 2013-09-02T16:00:15.853 回答