随着智能化的发展,人的需求变高,在一个环境内,如果子设备较多,距离适中,大多数是布置485总线加电源地需要4根线。这样就会导致走线复杂,线的成本也较高;如果用BLE或者wifi无线连接时也需要电源地2根线,成本更高。而powerbus双总线就解决了以上的布线复杂的问题,只需要2根线,既能提供设备的电源,又能完成设备间的数据通讯。并接各个子设备时又没有线序的困扰,很方便室内场景布置方案使用。以下是Powerbus电路的开发设计的记录powerbus分为主机和从机:主机采用的是PB620总线主站控制器;从机采用的是PB331总线收发器具有特点:PB311从机设备的电路部分,提供了TX、RXPB62
传统常用的485自动切换电路如下: 自动原理简述:1.TX=1(串口停止位),此时Q1导通,485芯片处于接收态,接收高(R4上拉为高,A,B线上下拉为A>B)总线处于高被接收端接收;;2.TX=0(串口起始位),此时Q1截止,485芯片处于发送态,将DI处的电平(固定为低)发送出去,此时A3.R4还是有必要的,为什么呢,看下芯片手册真值表:芯片的RO脚只在RE为0时才有意义,当RE为1时,RO为高阻态,R4电阻的作用时强制使RO为高电平,对MCU来说,即停止位。如果R4不是上拉到VCC,而是下拉到GND,会怎样呢?继续分析一下:对于TX状态,与上图无异;对于RX,差异就来了;1.TX=1的,
目录前言一、STM32CubeMX配置二、修改代码三、硬件测试总结前言该工程应用的以太网芯片是LAN8720,代码是基于STM32CUbeMx6.2.1配置生成的,在CubeMx中配置了ETH和LWIP,还有串口1和FREERTOS,最后通过创建任务函数实现udp的以太网数据收发功能。在测试中,可以在电脑的DOS窗口ping通在LWIP设置的单片机开发板的ip地址,通过网络调试助手可以实现数据的收发功能。一、STM32CubeMX配置1、选择STM32F407VET6芯片创建工程,首先配置RCC和SYS,再配置时钟,配置界面如下 2、配置ETH,配置界面如下 3、配FREERTOS和LWIP
1、通讯方式介绍在微处理器和外部通信模块之间主要有并行通信和串行通信两种。并行通讯传输速率快,但是占用引脚较多,串行通信与之相反。串行通讯分别有单工、半双工、全双工三种模式。单工:只能发送数据或者只能接收数据。半双工:既可以发送又可以接收,但是某一时刻只能处于单一模式(发送或者接收),例如RS485通讯方式。全双工:任意时刻都可以发送或者接收数据。(串口采用异步串行通信)2、Cubemax配置USART1、SYS配置如下图所示。2、RCC配置如下图所示。3、时钟树配置如下图所示。直接在红框内输入下方数值,回车确定即可自动对时钟树进行配置。4、串口初始化配置。5、生成代码。3、程序书写3.1发送
本文通过串口收发实验来说明具体的串口的使用过程,以及与其他外设通过串口进行通信从而实现相关功能。文章目录一、建立串口的头文件、源文件二、编写源文件三、主程序总结前言在STM32里,串口通信是USART,STM32可以通过串口和其他设备进行传输并行数据,是全双工,异步时钟控制,设备之间是点对点的传输。对应的STM32引脚分别是RX和TX端。STM32的串口资源有USART1、USART2、USART3.串口的几个重要的参数:波特率,串口通信的速率空闲,一般为高电平起始位,标志一个数据帧的开始,固定为低电平。当数据开始发送时,产生一个下降沿。(空闲–>起始位)数据位,发送数据帧,1为高电平,0为低
目录1、前言2、本设计UDP的优势3、B50610芯片解读4、UDP实现5、vivado工程详解6、上板调试验证并演示7、福利:工程代码的获取1、前言目前网上的fpga实现udp基本生态如下:1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?2:带ping功能的udp收发器,代码优秀也好用,但基本不开源,不会提供源码给你,这样的代码也有不足,那就是出了问题不知道怎么排查,毕竟你没有源码,无可奈何;
目录1、前言2、本设计UDP的优势3、B50610芯片解读4、UDP实现5、vivado工程详解6、上板调试验证并演示7、福利:工程代码的获取1、前言目前网上的fpga实现udp基本生态如下:1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?2:带ping功能的udp收发器,代码优秀也好用,但基本不开源,不会提供源码给你,这样的代码也有不足,那就是出了问题不知道怎么排查,毕竟你没有源码,无可奈何;
目录一、发送HEX数据包1.1固定包长,含包头包尾(包尾不是必须的)1.2可变包长,含包头包尾二、接收HEX数据包三、发送文本数据包3.1固定包长,含包头包尾3.2可变包长,含包头包尾四、接收文本数据包五、HEX数据包和文本数据包的比较六、程序用例6.1串口收发HEX数据包6.1.1接线图6.1.2程序代码6.2串口收发文本数据包6.21.1接线图6.2.2程序代码一、发送HEX数据包1.1固定包长,含包头包尾(包尾不是必须的)1.2可变包长,含包头包尾1、包头包尾和数据载荷重复的问题,传输的数据本身是FF和FE,可能引起误判解决:限制载荷数据的范围,限幅(例如只发送0~100)如果无法避免数
目录1、前言2、SDI快速扫盲SDI简介SDI信号3、设计思路和架构4、vivado工程详解GTHWizardIPSMPTESDICoreSDI收发逻辑SMPTEUHD-SDI接收端SMPTEUHD-SDI发送端5、上板调试验证并演示6、福利:工程代码的获取1、前言FPGA实现SDI视频编解码目前有两种方案:一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCRCB,GS2972发送器直接将并行的YCRCB编码为SDI视频,缺点是成本较高,可以百度一下GS2971和GS2972的价格;另一种方案是使用FPGA实
前言最近在学习使用hal库,之前都是用标准库来写32代码,所以发个帖子记录一下学习过程,同时也希望能帮助到一些也在学习HAL库的同学。接下来进入正题一、串口中断是什么?串口中断是指当单片机收到一个串口数据时,单片机会产生一个中断信号,通知处理器中断服务程序去处理这个接收到的数据。在中断服务程序中,我们可以读取串口接收缓冲区中的数据,并根据具体的应用场景进行处理,例如存储、显示、计算等操作。串口中断一般通过使用串口的中断接收功能实现。当有新的数据到达串口时,单片机会产生一个中断请求,触发中断服务程序。中断服务程序在处理完接收到的数据后,可以根据具体的应用需求采取相应的处理措施。相比于轮询方式,采