uart

ARM裸板开发——简单编写实现“shell”功能

谁说胖子不能爱 提交于 2020-01-21 12:44:56
文章目录 简单编写实现一个裸板环境下使用的“shell”功能程序,可以控制LED、beep等。 main主程序设计 主要函数:strcmp实现 LED初始化及控制功能实现 UART初始化及控制功能实现 使用Makefile编译 执行结果 简单编写实现一个裸板环境下使用的“shell”功能程序,可以控制LED、beep等。 main主程序设计 # include "uart.h" # include "strcmp.h" # include "led.h" //保存从上位机接收的数据信息 static char buf [ 32 ] ; void main ( void ) { //1.初始化UART uart_init ( ) ; //2.初始化LED led_init ( ) ; //3.根据用户需求完成业务 while ( 1 ) { uart_puts ( "\n Shell#" ) ; uart_gets ( buf , 32 ) ; if ( ! my_strcmp ( buf , "led on" ) ) led_on ( ) ; else if ( ! my_strcmp ( buf , "led off" ) ) led_off ( ) ; else uart_puts ( "\n Your command is invalid\n" ) ; } } 主要函数

Modbus 指令 RS485指令规则

喜夏-厌秋 提交于 2020-01-19 13:59:25
./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=1 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=2 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=3 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=4 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=5 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=6 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=7 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=8 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=9 ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=a ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=b ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=c ./CN/httpapi.json?&CMD=UART_WRITE&UWHEXVAL=d ./CN/httpapi

基于单片机的GPS开发 (one) UART串口精讲

删除回忆录丶 提交于 2020-01-19 11:56:49
1、89C51串行口特点 UART是单片机中的串行异步通信接口,全双工串口,能同时发送和接收数据 可编程:其帧格式可以是8位,10位,11位,并能设置各种波特率 2、控制寄存器 对 89C51串行口初始化编程只用两个控制字分别写入特殊功能寄存器SCON和电源控制寄存器PCON中即可。 (1)SCON控制寄存器 SM0、SM1:工作方式控制位 SM2:多机通信控制位,1-允许、0-不允许 REN:串行接收允许位。1-允许、0-不允许 TB8:发送数据第九位 RB8:接收数据第九位 TI:发送中断标志位 RI:接收中断标志位 SM0和SM1 : 串行口工作方式选择位 ,两个选择位对应四种通信方式,如下图所示,其中fosc是振荡频率 SM2: 多机通信控制位,主要用于方式2和方式3。 *若SM2 = 1;则允许多机通信。多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位数据为0,则本帧数据为数据帧。当一个89c51(主机)与多个89c51(从机)通信时,所有从机的SM2位都置1,主机首先发送的一帧数据为地址,即某从机号,其中第9位为1,所有的从机接收数据后,将其中第9位数据装入RB8中。各个从机根据接收到的第9位数据(RB8中)的值来决定从机是否再接收主机的信息、若(RB8)= 0,说明是数据帧,则使接收中断标志位RI = 0,信息丢失,若RB8 = 1

How to have the correct representation of words in C+python+UART?

久未见 提交于 2020-01-17 03:20:06
问题 In a serial communication, I need to send that ciphertext from python to UART which is able to read it by using C. At first, In the python side use this technique: ciphertext=(b'\x24\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x00\x30\x69\xc4\xe0\xd8') ser.write(ciphertext) In the C side, I put the received ciphertext in a buffer. I test If the first byte 24, the Start of the packet: if (buffer_RX[0]=='\x24') { for (i=1;i<=17;i++) //sizeof(buffer_RX)==17 { printf("%x \n",buffer_RX[i]); } } else {

Problems with connecting HC-05 Bluetooth module to PC

一曲冷凌霜 提交于 2020-01-16 08:35:42
问题 So i've been trying to connect my HC-05 BT module to PC. I'm sure i connected everything correct, i'm not new with arduino stuff. What i try to do now is i want to communicate with arduino using uart connection via BT. I have arduino leonardo, and here is my code: void setup() { Serial1.begin(9600); pinMode(LED_BUILTIN, OUTPUT); } void loop() { if (Serial1.available()>0) { String ainfo; ainfo = Serial1.readStringUntil('\n'); if (ainfo.equals("ON")) { digitalWrite(LED_BUILTIN, HIGH); Serial1

IOError: [Errno 2] No such file or directory (when it really exist) Python [duplicate]

半腔热情 提交于 2020-01-13 18:11:05
问题 This question already has answers here : IOError: [Errno 2] No such file or directory Python (1 answer) Python on Windows: IOError: [Errno 2] No such file or directory (2 answers) IOError: [Errno 2] No such file or directory trying to open a file (5 answers) Closed 2 years ago . I'm working on transfer folder of files via uart in python. Below you see simple function, but there is a problem because I get error like in title : IOError: [Errno 2] No such file or directory: '1.jpg' where 1.jpg

VCS编译仿真

非 Y 不嫁゛ 提交于 2020-01-12 07:27:20
最近在学习VCS,现将VCS的一些使用心得记录下来。 VCS是synopsys的仿真verilog的仿真器。基于linux系统。有命令行模式和图形化模式。图形化模式是用的dve。 以串口verilog代码使用为例,进行VCS使用说明。 简要说明下该串口功能。该串口工作在波特率为115200,无奇偶检验位。一位停止位。当使能信号有效,就将8位数据送出去,输出结束后,在将该数据读回来。即自发自收。 测试代码如下: module ceshi_uart_test; // Inputs reg clk; reg rst_n; reg [7:0] in_data; reg w_en; // Outputs wire [7:0] data; wire tx_free; wire rx_free; // Instantiate the Unit Under Test (UUT) ceshi_uart uut ( .clk(clk), .rst_n(rst_n), .in_data(in_data), .w_en(w_en), .data(data), .tx_free(tx_free), .rx_free(rx_free) ); always #1 clk = ~clk; initial begin // Initialize Inputs clk = 0; rst_n = 0; in_data

STM32 HAL UART 框架初体验

风格不统一 提交于 2020-01-11 18:32:09
文章目录 背景 开发步骤 配置环境 开始配置 HAL 背景 STM32开发平台,时至今日发展的已经相当成熟了,尤其对于外围硬件接口的抽象封装库,即HAL。好多基于STM32开发的工程师,习惯于直接操作外围接口相关的寄存器来完成所谓的驱动开发,其实,ST公司早就为大家准备好了对于这些外围接口的驱动框架,我们只需要直接拿来就可以使用。 可是以前,基于STM32平台开发时,存在一个问题就是,变换MCU型号时,需要在新老MCU之间移植驱动程序,移植过程中可能出现很多莫名其妙的问题,导致浪费了很多宝贵的开发时间,如何避免这种问题呢?其实,ST早就为大家考虑到了这一点,其开发了STM32CubeMX工具,基于该工具,我们可以轻松的完成各种外围接口的配置工作,而且最为神奇的就是,配置完成之后,该工具会自动生成工程代码,我们基于此,就可以直接进行开发了,免去了很多不必要的硬件寄存器配置工作。当然,对于特殊需求,我们还是需要去手动配置一些硬件寄存器,但是,这项工作大部分时间是不需要的。 既然,ST公司为我们提供了这么好用的工具,我们为什么不用起来呢?下面就基于UART的配置过程,来逐步的讲解一下,如何基于STM32CubeMX、Kiel和STM32 HAL来配置生成一个可用的开发环境。 开发步骤 配置环境 工欲善其事,必先利其器。首先第一步就是安装STM32CubeMX环境

基于FPGA的UART回环设计(2)

心不动则不痛 提交于 2020-01-10 07:26:04
基于FPGA的UART发送设计 uart_tx模块的时序图 uart_tx模块的代码 uart_tx测试模块的代码 结束语 uart_tx模块的时序图 从上一篇文章中,我们已经学习了uart_rx的设计,也已经附上了详细的代码,详细同学们已经学会了该模块的设计。这篇文章我们主要介绍uart_tx模块的设计,与上篇文章相同,我们将先给出模块的时序图,再给出相应的代码,最后给出模块的测试代码。uart_tx模块的时序图如下: uart_tx模块的代码 这里没有什么特别解释,同学们结合时序图与代码肯定可以看懂。这里直接上代码: `timescale 1 ns / 1 ps // ********************************************************************************* // Project Name : OSXXXX // Author : zhangningning // Email : nnzhang1996@foxmail.com // Website : // Module Name : uart_tx.v // Create Time : 2020-01-04 14:20:35 // Editor : sublime text3, tab size (4) // CopyRight(c) : All

linux的串口驱动分析

旧时模样 提交于 2020-01-10 05:59:38
1、串口驱动中的数据结构 • UART驱动程序结构: struct uart_driver 驱动 • UART端口结构: struct uart_port 串口 • UART相关操作函数结构: struct uart_ops 串口操作函数集 • UART状态结构: struct uart_state 串口状态 • UART信息结构: struct uart_info 串口信息 2、串口驱动程序-初始化 3、串口驱动分析-打开设备 static int s3c24xx_serial_startup(struct uart_port *port) { struct s3c24xx_uart_port *ourport = to_ourport(port); int ret; dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n", port->mapbase, port->membase); rx_enabled(port) = 1; ret = request_irq(ourport->rx_irq, s3c24xx_serial_rx_chars, 0, s3c24xx_serial_portname(port), ourport); if (ret != 0) { printk(KERN_ERR "cannot get irq %d