isakura 发表于 2023-12-20 12:28:52

请教各位大佬,单线通讯有什么好用的通讯方式?


1、现在需要弄个单线通讯(基本单向发送就可以),想找个通用点的通讯方式;

2、个人中意串口,可是接收方串口不够用,只有有模拟,为了兼容稳定性,想弄成3K左右的波特率(接收方100us的中断最好),市面上好像也没有非标波特率的串口;

dukelec 发表于 2023-12-20 12:46:22

串口可以啊,担心什么?

> 没有非标波特率的串口
是指什么?波特率基本都可以随便定的,个别串口工具软件没支持手动填写波特率而已

lyping1987 发表于 2023-12-20 13:13:25

1、电平根据传输距离确定;
2、波特率,目前大部分单片机、上位机都支持自定义波特率了。

天下乌鸦一般黑 发表于 2023-12-20 13:19:38

串口协议就不错啊~网上一大堆可以参考的。

ackyee 发表于 2023-12-20 14:00:39

两根线用串口    一根线就用单总线协议 (18b20)的这种

czzhouyun 发表于 2023-12-20 14:15:49

都模拟了还在乎波特率是不是标准的吗?以前一个项目模拟四个双向串口,运行很稳定,网上例程很多

tomzbj 发表于 2023-12-20 14:43:08

本帖最后由 tomzbj 于 2023-12-20 14:44 编辑

elm-chan (就是流行的fatfs的作者)写过一个软件实现的uart, 不过是跑在avr上面的. 可以参考他的改改.

链接: http://elm-chan.org/docs/avrlib/suart.zip

要不就用类似18b20或者红外之类的方式, 用脉冲长短表示1和0, 不用考虑双向发送的话也很简单.

isakura 发表于 2023-12-20 15:14:39

dukelec 发表于 2023-12-20 12:46
串口可以啊,担心什么?

> 没有非标波特率的串口
(引用自2楼)

为了方便监测,没找到可以随意输入波特率的上位机软件

isakura 发表于 2023-12-20 15:15:44

lyping1987 发表于 2023-12-20 13:13
1、电平根据传输距离确定;
2、波特率,目前大部分单片机、上位机都支持自定义波特率了。 ...
(引用自3楼)

单片机随意指定波特率可以,我想找个可以随意输入波特率的上位机软件

Landmark 发表于 2023-12-20 15:22:42

这个就任意波特率的串口助手 ,配合CH340实测可用。

阿豪博士 发表于 2023-12-20 16:18:03

dukelec 发表于 2023-12-20 12:46
串口可以啊,担心什么?

> 没有非标波特率的串口
(引用自2楼)

请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?

1a2b3c 发表于 2023-12-20 16:49:08

阿豪博士 发表于 2023-12-20 16:18
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?
(引用自11楼)

哪里耗时,芯片端还是电脑
芯片端的话,波特率已知的,自己测试一下纯输出(不用print里面的格式换算等等,实际就是单字节死等发送)情况时间是不是和波特率一致的,是的话要么就是你的芯片在干其它事情(比如被中断打扰,格式化处理太好资源等),
如果都没问题,那还有啥办法啊,只有dma了

lb0857 发表于 2023-12-20 17:08:14

isakura 发表于 2023-12-20 15:15
单片机随意指定波特率可以,我想找个可以随意输入波特率的上位机软件
(引用自9楼)

stc助手最高版本的
论花俏和稳定性 stc真不赖

isakura 发表于 2023-12-20 22:28:58

Landmark 发表于 2023-12-20 15:22
这个就任意波特率的串口助手 ,配合CH340实测可用。
(引用自10楼)

多谢,我先看看

isakura 发表于 2023-12-20 22:30:45

lb0857 发表于 2023-12-20 17:08
stc助手最高版本的
论花俏和稳定性 stc真不赖
(引用自13楼)

请问有版本号吗?我打开官网主页,都是下载助手,不知道哪个版本好

tomzbj 发表于 2023-12-20 22:38:16

阿豪博士 发表于 2023-12-20 16:18
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?
(引用自11楼)

最简单的办法, 波特率高点, 你要是主频够高, 波特率直接500000

不行就折腾中断发送和DMA发送吧

lb0857 发表于 2023-12-20 22:57:26

isakura 发表于 2023-12-20 22:30
请问有版本号吗?我打开官网主页,都是下载助手,不知道哪个版本好
(引用自15楼)

最高版本号,支持自定义波特率
ascii和hex特别显示等等功能

qwe2231695 发表于 2023-12-20 23:49:10

阿豪博士 发表于 2023-12-20 16:18
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?
(引用自11楼)

printf 最后必须是\n 才会输出

1a2b3c 发表于 2023-12-21 09:50:10

qwe2231695 发表于 2023-12-20 23:49
printf 最后必须是\n 才会输出
(引用自18楼)

我不认同你的说法啊,你试过没有?

qwe2231695 发表于 2023-12-21 12:35:50

本帖最后由 qwe2231695 于 2023-12-21 12:49 编辑

1a2b3c 发表于 2023-12-21 09:50
我不认同你的说法啊,你试过没有?
(引用自19楼)

试过了,不带\n会很久

一般是编写putchar函数获得c库的printf内容,然后串口发出。printf的缓冲区具备 行缓冲 特性,即 若打印的数据没有添加换行符,则不会立即打印,将会一直等到遇到 '\n' 或是 缓冲区满了(强制清除缓冲区)才会输出。

SCREA 发表于 2024-2-5 16:26:53

IO Link试试

tomzbj 发表于 2024-2-15 19:03:47

qwe2231695 发表于 2023-12-21 12:35
试过了,不带\n会很久

一般是编写putchar函数获得c库的printf内容,然后串口发出。printf的缓冲区具备...
(引用自20楼)

printf之后紧接一条fflush(stdout)就解决了

1a2b3c 发表于 2024-2-15 23:42:59

tomzbj 发表于 2024-2-15 19:03
printf之后紧接一条fflush(stdout)就解决了
(引用自22楼)

一般不是Linux一类的才有这个问题吗?单片机从来没有过呢,
有一次改树莓派的一个程序试出来的,一点不懂,搜半天发现要加个flush就是立即输出的意思😂

tomzbj 发表于 2024-2-16 10:39:22

1a2b3c 发表于 2024-2-15 23:42
一般不是Linux一类的才有这个问题吗?单片机从来没有过呢,
有一次改树莓派的一个程序试出来的,一点不懂 ...
(引用自23楼)

看你单片机的stdio是怎么实现的吧, 我用stm32+gcc, 用标准库的printf, 一样有这个问题.

如果是某些魔改的printf就不一定了.
页: [1]
查看完整版本: 请教各位大佬,单线通讯有什么好用的通讯方式?