常用通信外设的开发总结

第一次写博客,毕业一年,工作两年,在工作中摸爬滚打,工作虐我千百遍,我待工作如初恋,--前言

在这里总结一下,分享一些经验,当然,有说错的地方请指正,这里的经验之谈是基于STM32系列,讲一下关于常用通信外设的开发,所有的通信都需要做信号完整性分析,使用示波器等工具分析信号的上升,下降时间,需要调整上拉或下拉电阻,这也是一个嵌入式工程师必备的技能。

USART:串口通信,是最简单可靠的通信方式,全双工通信,常用的波特率是9600,115200,只有TX、RX,双方要先规定通信的速率,才能正确解析传输的数据,实际使用中,在通信距离短的地方可以使用更高的波特率通信,使到传输数据的带宽大大提高,通信量也是非常可观的,不亚于can 1M通信的实际通信量

在工作中有用过SBUS协议的,是一种串口反向,然后与常用串口设置略有不同串口,配置为波特率100kbps,8位数据,偶校验,2位停止位,无流控。注意其中停止位是2位。

串口的数据发送接收可以使用DMA,我一般接收使用DMA,发送就没有使用,空闲中断,将DMA接收到的数据拷贝到环形缓冲区,在中断中要注意处理溢出中断,这也是新手常犯的错误,导致程序在调试中一打断点就无法接着调试。

在主循环处理环形缓冲区的数据,如果用RTOS,这种处理只需要修改为在中断里产生任务通知,在外面的任务去处理环形缓冲区的数据即可

I2C:非常常用的通信接口,很多传感器,加密芯片,驱动芯片都是使用这种接口,I2C在软件实现上可以使用软件模拟,也可以用硬件库,通过写寄存器去实现I2C通信功能,首先当然是了解I2C通信协议,软件I2C更能直观地反映到I2C通信过程,建议新手使用,I2C通信就是向一个设备地址的寄存器地址写入、读取对应的值,使用软件I2C要使用逻辑仪分析通信速率,以及是否符合通信协议,不能单单看一个结果,实际可能是不可靠的。

硬件I2C在写入寄存器常用的写法都在等待,这种是否真的占用CPU时间更少还有待定夺,也有高级的写法,使用中断处理

485:485总线通信,一对多的一种通信总线,由于是差分信号,通信距离可以比较长,消除共模噪声的影响,485通信一般是使用串口转485芯片,因此总线里使用的485芯片不同对信号的高低是有影响的,而且485发送的一帧数据里,最后一个字节往往是错的,在发送完后,将芯片从发送置为接收,最后的1bit会被拉低,因此一个有效的办法是在一帧数据的结尾多发送一个字节,使得帧数据没有被影响,一对多的特性使得client想向host发消息,就只能是host请求后做应答,因此,总线的利用效率比较低,但很多电调都是使用485通信,大楼的电梯据说也是,看重的是差分信号通信的可靠性。

can:can总线在工业级里用得比较多,can总线的机制是最完善的,可以设置掩码过滤不想处理的数据,每个节点有一个独立的can id,在总线里节点不能冲突,不能发送,应答用同一个can id,冲突的效果是总线传输的数据是两者的与,比如有一个节点在这一时刻发送0x0f,另一节点发送的是0xf0,接收到的数据是0x00,can有5种帧,一般在通信协议里就只用到数据帧,对于一些不需要携带数据的也可以用远程帧,其他的在一般设计里用不到,can每帧数据最大发送8个字节,而它自己多加了29bit,标准can通信协议,can数据的处理也跟uart类似,在中断里接收写进环形缓冲区,在外部做处理。can通信是可靠的?因为有can crc校验,有重传机制,但是,这些都是can 协议层的可靠,在实际开发中,还是需要对帧数据做校验,防止在应用层出错

就先写到这里了,开篇。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC是微软的一种Windows操作系统下的编程框架,可以帮助程序员快速地构建Windows桌面应用程序。在MFC中,蓝牙的通信可以通过使用Windows API实现。 要实现PC端蓝牙与外设通信,首先需要安装蓝牙适配器,并在Windows系统中进行相应设置。然后,通过MFC中的Windows API,可以访问蓝牙适配器,并与外设进行通信。 MFC中的Windows API提供了一些函数来实现蓝牙通信,例如“BluetoothEnumerateInstalledServices”可以用于枚举已安装的蓝牙服务,而“BluetoothSetServiceState”可以用于启用或禁用特定的蓝牙服务。此外,还有一些函数可以用于建立蓝牙连接、发送和接收数据等。 在使用MFC实现蓝牙通信时,需要注意安全问题。使用蓝牙通信可能会面临蓝牙监听、信息泄露等问题,因此需要进行加密和身份验证等安全措施。 总之,在MFC中实现蓝牙通信需要先安装蓝牙适配器,然后通过使用MFC中的Windows API来访问蓝牙适配器并与外设通信。同时,为了保证安全,需要注意安全问题,并采取相应的安全措施。 ### 回答2: MFC是Microsoft提供的一套基于Windows平台的软件开发工具包,它提供了多种编程控件和类库,方便程序员快速开发Windows应用程序。在MFC中,可以通过调用Windows API函数来实现各种功能,其中蓝牙通信也是一种常用的功能。 在PC端实现蓝牙与外设通信主要分为两个部分:蓝牙设备管理和数据传输管理。关于蓝牙设备管理,在MFC中可以通过调用Windows API中的蓝牙函数实现,例如使用BluetoothFindFirstRadio、BluetoothFindFirstDevice等函数进行查找和配对;数据传输管理主要涉及到数据的接收和发送,可以使用BluetoothSdpEnumRecords、BluetoothRfcommConnect等函数实现。 除了使用Windows API函数外,还可以使用第三方蓝牙类库来简化蓝牙通信开发。例如,利用开源的32feet.NET类库可以快速实现PC端蓝牙和外设之间的通信,类库提供了BluetoothClient、BluetoothListener等蓝牙通信相关类。 通过以上方法实现PC端蓝牙与外设之间的通信,可以满足一定的应用场景。但需要注意的是,蓝牙通信中存在一些限制和不可靠性,例如传输速率较慢、信号受干扰影响较大等,需要针对具体应用场景进行综合考虑。 ### 回答3: MFC是Microsoft Foundation Class的缩写,是微软公司推出的一种基于C++的GUI编程框架。通过MFC可以方便地实现Windows操作系统上的软件开发。为了实现PC端蓝牙与外设通信,需要以下几个步骤: 第一步,打开蓝牙设备并连接外设。在MFC中,可以使用Bluetooth API来操作蓝牙设备。可以使用BluetoothEnableDiscovery函数打开蓝牙设备,并使用BluetoothConnect函数连接外设。 第二步,判断是否连接成功。在连接外设之后,可以使用BluetoothGetDeviceInfo函数获取外设的信息,比如名称、地址等。如果获取成功,则说明连接成功。 第三步,发送和接收数据。在MFC中可以使用CAsyncSocket来实现数据传输。首先需要创建一个CAsyncSocket对象,然后使用Connect函数来连接外设。接着使用Send函数发送数据,使用Receive函数接收数据。 第四步,关闭蓝牙。在通信结束之后,需要使用BluetoothCloseConnection函数断开蓝牙连接,并使用BluetoothEnableDiscovery函数关闭蓝牙设备。 总之,通过MFC可以很方便地实现PC端蓝牙与外设通信。需要注意的是,使用蓝牙技术进行通信时需要保证设备之间的安全性,以免被攻击或数据泄露。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值