请教各位大佬,单线通讯有什么好用的通讯方式?
1、现在需要弄个单线通讯(基本单向发送就可以),想找个通用点的通讯方式;
2、个人中意串口,可是接收方串口不够用,只有有模拟,为了兼容稳定性,想弄成3K左右的波特率(接收方100us的中断最好),市面上好像也没有非标波特率的串口; 串口可以啊,担心什么?
> 没有非标波特率的串口
是指什么?波特率基本都可以随便定的,个别串口工具软件没支持手动填写波特率而已 1、电平根据传输距离确定;
2、波特率,目前大部分单片机、上位机都支持自定义波特率了。 串口协议就不错啊~网上一大堆可以参考的。 两根线用串口 一根线就用单总线协议 (18b20)的这种 都模拟了还在乎波特率是不是标准的吗?以前一个项目模拟四个双向串口,运行很稳定,网上例程很多 本帖最后由 tomzbj 于 2023-12-20 14:44 编辑
elm-chan (就是流行的fatfs的作者)写过一个软件实现的uart, 不过是跑在avr上面的. 可以参考他的改改.
链接: http://elm-chan.org/docs/avrlib/suart.zip
要不就用类似18b20或者红外之类的方式, 用脉冲长短表示1和0, 不用考虑双向发送的话也很简单. dukelec 发表于 2023-12-20 12:46
串口可以啊,担心什么?
> 没有非标波特率的串口
(引用自2楼)
为了方便监测,没找到可以随意输入波特率的上位机软件 lyping1987 发表于 2023-12-20 13:13
1、电平根据传输距离确定;
2、波特率,目前大部分单片机、上位机都支持自定义波特率了。 ...
(引用自3楼)
单片机随意指定波特率可以,我想找个可以随意输入波特率的上位机软件 这个就任意波特率的串口助手 ,配合CH340实测可用。 dukelec 发表于 2023-12-20 12:46
串口可以啊,担心什么?
> 没有非标波特率的串口
(引用自2楼)
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗? 阿豪博士 发表于 2023-12-20 16:18
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?
(引用自11楼)
哪里耗时,芯片端还是电脑
芯片端的话,波特率已知的,自己测试一下纯输出(不用print里面的格式换算等等,实际就是单字节死等发送)情况时间是不是和波特率一致的,是的话要么就是你的芯片在干其它事情(比如被中断打扰,格式化处理太好资源等),
如果都没问题,那还有啥办法啊,只有dma了 isakura 发表于 2023-12-20 15:15
单片机随意指定波特率可以,我想找个可以随意输入波特率的上位机软件
(引用自9楼)
stc助手最高版本的
论花俏和稳定性 stc真不赖 Landmark 发表于 2023-12-20 15:22
这个就任意波特率的串口助手 ,配合CH340实测可用。
(引用自10楼)
多谢,我先看看 lb0857 发表于 2023-12-20 17:08
stc助手最高版本的
论花俏和稳定性 stc真不赖
(引用自13楼)
请问有版本号吗?我打开官网主页,都是下载助手,不知道哪个版本好 阿豪博士 发表于 2023-12-20 16:18
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?
(引用自11楼)
最简单的办法, 波特率高点, 你要是主频够高, 波特率直接500000
不行就折腾中断发送和DMA发送吧 isakura 发表于 2023-12-20 22:30
请问有版本号吗?我打开官网主页,都是下载助手,不知道哪个版本好
(引用自15楼)
最高版本号,支持自定义波特率
ascii和hex特别显示等等功能 阿豪博士 发表于 2023-12-20 16:18
请问一下 printf 感觉明显耗时 这个有什么方案 可以替换吗?
(引用自11楼)
printf 最后必须是\n 才会输出 qwe2231695 发表于 2023-12-20 23:49
printf 最后必须是\n 才会输出
(引用自18楼)
我不认同你的说法啊,你试过没有?
本帖最后由 qwe2231695 于 2023-12-21 12:49 编辑
1a2b3c 发表于 2023-12-21 09:50
我不认同你的说法啊,你试过没有?
(引用自19楼)
试过了,不带\n会很久
一般是编写putchar函数获得c库的printf内容,然后串口发出。printf的缓冲区具备 行缓冲 特性,即 若打印的数据没有添加换行符,则不会立即打印,将会一直等到遇到 '\n' 或是 缓冲区满了(强制清除缓冲区)才会输出。 IO Link试试 qwe2231695 发表于 2023-12-21 12:35
试过了,不带\n会很久
一般是编写putchar函数获得c库的printf内容,然后串口发出。printf的缓冲区具备...
(引用自20楼)
printf之后紧接一条fflush(stdout)就解决了 tomzbj 发表于 2024-2-15 19:03
printf之后紧接一条fflush(stdout)就解决了
(引用自22楼)
一般不是Linux一类的才有这个问题吗?单片机从来没有过呢,
有一次改树莓派的一个程序试出来的,一点不懂,搜半天发现要加个flush就是立即输出的意思😂 1a2b3c 发表于 2024-2-15 23:42
一般不是Linux一类的才有这个问题吗?单片机从来没有过呢,
有一次改树莓派的一个程序试出来的,一点不懂 ...
(引用自23楼)
看你单片机的stdio是怎么实现的吧, 我用stm32+gcc, 用标准库的printf, 一样有这个问题.
如果是某些魔改的printf就不一定了.
页:
[1]