• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于串口 IIC 484 CAN 等等通讯有关的问题

小多多55555 2017-12-21 浏览量:1039

本人学习单片机其实已经很长时间了 51 32 都学过 问出这个问题其实自己都有点脸红 但还是希望各位前辈们不吝赐教:

      我学单片机有两个东西 就是无论怎么学 都学不明白 那就是串口和通讯 因为感觉这个东西特别抽象 一直不能理解 只要和串口通讯沾边的东西就蒙  一般都是用人家写好的函数 要是让我自己写 我连一点思路都没有

      先说串口 说个最简单的问题  一个能直接 用串口读出数据的模块或传感器(都不需要把数据处理 直接读出来就能用的那种)把数据用串口读出来 再通过串口发给电脑 通过串口调试助手查看数据 我自己写 写不出来 就是搞不懂这个数据是如何发送接收的 感觉特别抽象 不像那种LED灯 PWM 能直观的看出来 他这数据是怎么发的 什么时候发 一次发多少 你是以什么样的形式接收他的 接收到以后存哪了 还有在一些数据手册会写什么      

     起始符1                         0x42                             (固定)

     起始符1                         0x4d                             (固定)

     帧长度高八位                  .......                              帧长度=2*13+2(数据+校验位) 

     帧长度低八位                  .......

     数据1高八位                   .......

     数据1低八位                   .......

    ............................................

    数据13抵八位                  .......

    数据和校验高八位            ........                           校验位=起始符1+起始符2+.......+数据13抵八位

    数据和校验抵八位            ........

    就像这个数据手册写的 我在串口中断函数怎么才能把我想要的数据读出来 读出来我放哪 又怎么通过串口发给电脑用串口调试助手查看 想不明白 说白了还是不理解串口这个东西 就像写程序的时候 经常会看见判断标志位 

while(.......)//判断接收是否完成                                        while(.........)//判断数据发送是否完成

{                                                                                     { 

......................                                                                 ........................

}                                                                                      }

当然这两个 还是明白的一个在接收数据 一个在发送数据  但他这个数据怎么发的怎么接收的 一次发多少 一次接收多少  那些个校验位他是怎么处理的 还是想不明白

以上是第一个问题(快把自己写晕了)   

      再说第二个问题 就是一些通信IIC SPI 458 CAN

      其实485和CAN应该算第一个问题串口的问题

      就说IIC和SPII吧 反正就是和通讯有关的   

      首先说这个东西在我的大脑里和串口一样 也是感觉很抽象 不能理解  因为现在很多的传感器和模块都是这两种接口的 虽说一般的传感器买来商家都会给历程 直接用人家写好的历程就行 即便不能直接用 把相应的函数移植到自己开发板还是没问题的 但如果没有历程 就给我个数据手册 让我自己通过数据手册上的时序图 和往寄存器的读写操作 把数据读出来  一下就蒙比了 完全搞不懂 怎么往寄存器写 又怎么从寄存器里读 写什么读什么 还有那些时序图 什么起始信号 停止信号 应答非应答 都是什么意思 一点不理解  反正只有一用到串口或通讯的东西 就迷糊 就是理解不了

      而且我也发现周围的同学 包括我在内 都有一个毛病 拿到一个新的传感器或模块 第一反应都不是去网上查查资料或看看数据手册想办法把程序写出来  第一反应都是 “来 咱们先去网上找个历程”  然后就是百度历程各大论坛各种搜  要是能找到还行 把人家的历程移植到自己的程序中 要是找不到 自己想办法写 我只能“呵呵”一笑  以前程序咋写出来的 “自己心里没点B数吗”  

      之前也有人和我说过“那些无线通信啊 WIFI啊 蓝牙啊 网口啊 看起来好像很高大上的样子 那是人家芯片模块做的NB 跟你一毛钱关系都没有 你不就用串口读了个数据吗 还是那些传感器 看似挺好玩的 能测出角度 震动 温湿度 那也是人家传感器做的好 跟你也没一毛钱关系  你只不过是按照人家规定的通讯协议 把数据读出来了而已” 但是恰好串口和通讯我都学明白  所以我感觉把这些东西搞明白是非常非常有必要的 希望前辈们能给指条明路 让自己能把这些东西完全整明白理解了 下次就能自己把程序能写出来                                                           

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:8
  • 最好就是在实践中学习了。找几个正确的,可以运行通的先试试,
电子老工程师 回复了 :封装不一样,CSD16321Q5C 有个PIN9,CSD16321Q5没有 回复

  • 1.

    串口通讯其实和PWM也是类似的,就是高低电平的输出,用示波器抓波形就能感觉出来,这里有篇文章不错,可以参看下http://www.51hei.com/bbs/dpj-39824-1.html。当然实际使用中厂商已经把他做了,你只要往寄存器放字节就可以,读取就是取字节,所有的数据都是一个字节一个字节发送/读取的,厂商给的就是字节解析的,这个多参考别人的吧,也不知道该怎么说,DMA超时中断时比较好用的方式,上来就是一整包数据,直接校验比较就好。
    2.

    IIC和SPI也是一样的,你抓波形去比较会比较好理解。都是一些高低电平的顺序问题。
电子老工程师 回复了 :104204-0311 定制件。原厂没有公开相关配套产品。 回复

  • 首先你要明白一点,能在总线上面传输的只有高低电平,不存在什么数据,那些数据都是要经过处理才能呈现的

    至于传感器,你要看手册,一般它会要求传输前有多少个时长的高字节或者低字节的

    至于找程序这个,说实话,我也是这样干的,你不可能从0开始写,关键是你要理解人家程序里面的那个流程是怎样的

电子老工程师 回复了 :型号:EC20032403-V01-2960, 厂牌:丽晶微 链接是官网资料:http://www.szecm.com/Products/za1mkgjic.html 回复

  • 串口是通讯的一种接口方式。串口是一种硬件上有通用定义的一种接口。无论是什么通信方式都是电平变化,由相关芯片转换电平,1就是高电平,0就是低电平,收到高高低低的电平,转换出来就是001110101这些数据了。
电子老工程师 回复了 :https://www.torexsemi.com/file/xp162a12a6pr/XP162A12A6PR.pdf 回复

  • 这都是通信总线接口,I2C是有一套传输数据的流程机制;串口、485是有硬件接口定义和硬件协议的;但是你传输什么数据,怎么发是自己定义。


电子老工程师 回复了 :https://atta.szlcsc.com/upload/public/pdf/source/20171113/C142334_15105615129391115948.pdf 回复

  • 串行接口通信一般也就关心几个问题,数据位是几位,7位还是8位,传输大8位的数据怎么处理,是先传高字节还是先传低字节,时钟频率多少等等这些问题。

电子老工程师 回复了 :EEUED2G330S 厂牌:Datasheet 回复
电子老工程师 回复了 :EEUED2G330S 厂牌:Panasonic 回复

  • 一般都是看时序图来写的   而且你说的串口这个 已经完全硬件化了  就是可以不需要考虑软件部分了  配置好了就能用   所以串口通讯你不需要去纠结   其他通讯I I C    I I S    S P I  都好说  就是时序图  看懂了时序图  用电平模拟出来就是了   

  • 你的传感器是测 pm2.5的吧。

    直接在串口中断里  判断起始符,接收到起始符就把数据存入数组。  接收完成后再做处理就行了。


    485 可以理解成是串口。我目前接触的都是用一颗串口转485的芯片。就是信号方式不同。另外485是半双工的。

相关问题

问题达人换一批

关于串口 IIC 484 CAN 等等通讯有关的问题