OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3773|回复: 1

关于串口 通讯的问题

[复制链接]

15

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-7-22
在线时间
45 小时
发表于 2017-12-21 13:49:58 | 显示全部楼层 |阅读模式
20金钱
本人学习单片机其实已经很长时间了 而且原子哥的手把手教你学STM32也讲的很细  问出这个问题其实自己都有点脸红的 还望各位前辈们不吝赐教:
      我学单片机有两个知识点 就是无论怎么学 都学不明白 那就是串口和通讯 因为感觉这个东西特别抽象 一直不能理解 只要和串口通讯沾边的东西就蒙  要是必须得用都是用人家写好的函数 要是让我自己写 我连一点思路都没有
      先说串口 说个最简单的问题  一个能直接 用串口读出数据的模块或传感器(都不需要把数据处理 直接读出来就能用的那种)把数据用串口读出来 再通过串口发给电脑 通过串口调试助手查看数据 我自己写 写不出来 就是搞不懂这个数据是如何发送接收的 感觉特别抽象 不像那种LED PWM LCD能直观的看出来 他这数据是怎么发的 什么时候发 一次发多少 你是以什么样的形式接收他的 接收到以后存哪了 比如一些数据手册会写到      
     起始符1                         0x42                             (固定)
     起始符1                         0x4d                             (固定)
     帧长度高八位                  .......                              帧长度=2*13+2(数据+校验位)
     帧长度低八位                  .......
     数据1高八位                   .......
     数据1低八位                   .......
    ............................................
    数据13抵八位                  .......
    数据和校验高八位            ........                           校验位=起始符1+起始符2+.......+数据13抵八位
    数据和校验抵八位            ........
    就像这个数据手册写的 我在串口中断函数怎么才能把我想要的数据读出来 读出来我放哪 又怎么通过串口发给电脑用串口调试助手查看 想不明白 说白了还是不理解串口这个东西 就像写程序的时候 经常会看见判断标志位
while(.......)//判断接收是否完成                                        while(.........)//判断数据发送是否完成
{                                                                                     {
......................                                                                 ........................
}                                                                                      }
当然这两个还是明白的 一个在接收数据 一个在发送数据  但他这个数据怎么发的怎么接收的 一次发多少 一次接收多少  那些个校验位他是怎么处理的 还是想不明白
以上是第一个问题(快把自己写晕了)   
      再说第二个问题 就是一些通信IIC SPI 458 CAN
      其实485和CAN应该算串口的问题
      就说IIC和SPI吧 反正就是和通讯有关的   
      首先说这个东西在我的大脑里和串口一样 也是感觉很抽象 不能理解  但现在很多的传感器和模块都是这两种接口的 虽说一般的传感器买来商家都会给历程 直接用人家写好的历程就行 即便不能直接用 把相应的函数移植到自己开发板还是没问题的 但如果没有历程 就给我个数据手册 让我自己通过数据手册上的时序图 和往寄存器的读写操作 把数据读出来  一下就蒙比了 就说个最简单的比如正点原子上讲过的MPU6050和NRF24L01 一个是IIC接口的 一个是SPI接口的 每次用都是把人家写好的历程中的.C和.H文件复制到自己的程序中 改改管脚的定义 就能用了 如果让我自己写.C和.H文件 完全搞不懂 怎么往寄存器写 又怎么从寄存器里读 写什么读什么 还有那些时序图 什么起始信号 停止信号 应答非应答 都是什么意思 一点不理解
      反正只要和串口和通讯有关的东西 就迷糊 就是感觉很抽象 不能很好的理解
      而且我也发现周围的同学 包括我在内 都有一个毛病 拿到一个新的传感器或模块 第一反应都不是去网上查查资料或看看数据手册想办法把程序写出来  第一反应都是 “来 咱们先去网上找个历程”  然后就是百度历程各大论坛各种搜  要是能找到还行 把人家的历程移植到自己的程序中 要是找不到 自己想办法写 我只能“呵呵”一笑 以前程序咋写出来的 “自己心里没点B数吗” (其实是说给自己听的)
      之前也有人和我说过“那些无线通信啊 WIFI啊 蓝牙啊 网口啊 看起来好像很高大上的样子 那是人家芯片模块做的NB 跟你一毛钱关系都没有 你不就用串口读了个数据吗 还是那些传感器 看似挺好玩的 能测出角度 震动 温湿度 那也是人家传感器做的好 跟你也没一毛钱关系  你只不过是按照人家规定的通讯协议 把数据读出来了而已”  但恰好串口和通讯我都没学明白 所以我感觉把这些东西搞明白是非常非常有必要的 希望前辈们能给指条明路 让自己把这些东西完全整明白理解了 下次自己就能写出来
                                                                                                                                                                          向原子哥和前辈们致敬

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2017-12-21 14:18:44 | 显示全部楼层
楼主学习了这么久的时间,是不是还从来没有使用过逻辑分析仪.
如没有,尽快买一个.一抓波形.什么都知道了.
UART通信,无从盾形.USB通信都有可能被全部抓出来.
有了他,抽象就形象.不理解变理解了.
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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