奋斗STM32开发板Tiny NRF24L01转USB虚拟串口例程手册
arm-linux下usb转串口移植手册
arm-linux下usb转串口移植手册:讲述在嵌入式平台上,移植usb转串口的步骤:1、配置Kernel2、文件系统配置等。
Kernel:在配置内核时:加入usb转串口的支持、加入usb转串口器件的支持。
不同厂家的usb转串口工具需要的驱动可能不一样。
Device Drivers --->USB support --->--- USB port driversUSB Serial Converter support ---><*> USB Serial Converter support[*] USB Serial Console device support[*] USB Generic Serial drivert< > USB AIRcable Bluetooth Dongle Driver (EXPERIMENTAL)<*> USB FTDI Single Port Serial Driver (EXPERIMENTAL)本次实验才用的是FTDI的usb转串口工具在配置Kernel时,还可以加入对其他厂家的驱动支持。
文件系统:1、在/dev目录下建立设备文件/dev/ttyUSB0mknod /dev/ttyUSB0 c 188 02、在运行/sbin/getty登陆命令之前要先设置好:usb转串口对应端口的波特率、停止位等。
int usb_to_serial_init(viod){iUSBTORS232 = open( "/dev/ttyUSB0", O_RDWR);if (iUSBTORS232 iRS232 < 0){printf("Can't open device dev/ttyUSB00");return -1;}set_speed(iUSBTORS232 iRS232,BAUDRA TE);set_Parity(iUSBTORS232 iRS232,8,1,'n');close(iRS232);}3、在/etc/inittab 加入如下命令。
NRFANDUSB通信模块用户手册
NRFANDUSB通信模块用户手册NRF AND USB通信模块用户手册概述:NRF AND USB通信模块是为方便计算机利用NRF24L01无线收发模块实现无线通信而设计的一款转接口模块,使用此模块用户只需通过简单设置便可直接利用计算机串口(虚拟串口)进行无线数据收发,如此可省去设计SPI转接口及配置寄存器的工作,提高用户开发、学习效率。
NRF AND USB通信模块中NRF24L01以MCU、PL2303为转接桥梁连接至计算机USB端口,通过上位机E控制台可方便修改其通信参数,修改成功后参数将保存至MCU EEPROM 中,模块上电启动时MCU将自动加载并配置该参数。
NRF AND USB通信模块具有自动应答机制、自动重发机制、5字节可设置通信地址、1200-57600bps可选波特率、1-32字节通信数据宽度等特点,为用户提供灵活可靠的一对一无线通信模式。
使用说明:1.安装在使用NRF AND USB通信模块之前用户需在目标计算机中安装PL2303驱动程序,驱动程序可到网上下载。
驱动程序安装完成后打开软件压缩包双击“E控制台.msi”安装“E控制台”,“E控制台”是基于.NET平台开发的桌面应用程序,故安装“E控制台”需framwork4.0组件支持,若目标计算机未安装此组件请先将软件压缩包中的framwork4.0组件安装至目标计算机。
软件安装环境:Window XP/Vista/Windows7,推荐Windows7。
2.设置初次使用NRF AND USB通信模块或更改其通信方式时需对其参数进行设置,启动“E控制台”选中“设置”页。
其参数描述如下:参数设置须与目标模块对应,确认无误后打开端口然后点击确认设置,若设置成功将出现提示文字。
设置成功后软件将保存设置信息并在以后启动软件时自动加载,但只有部分显示在参数设置框上,此信息不影响“设置”页参数值,仅在“通信”和“控制”页起作用。
3.通信参数设置完成后可通过“通信”页进行联调,数据类型可选择HEX型(16进制,可加空格分隔)或字符型,其数据宽度应等于最近一次参数设置成功时所设的宽度,若发送数据宽度超出所设数据宽度则去掉尾部,若发送数据宽度小于所设数据宽度则HEX型补“0”字符型补“空格”。
关于使用STM32硬件SPI驱动NRF24L01
关于使用STM32硬件SPI驱动NRF24L01+ 今天是大年初一总算有时间做点想做很久的事了,说到NRF2401可能很多电子爱好者都有用过或是软件模拟驱动又或是用单片机自带的硬件SPI来驱动,但不管是用哪种方法来驱动我想都在调试方面耗费了不少的时间(可能那些所谓的电子工程师不会出现这种情况吧!)网上的资料确实很多,但大多数都并没有经过发贴人认真测试过,有的只是理论上可以行的通但上机测试只能说是拿回来给他修改。
本文作者也是经过无助的多少天才算是调试成功了(基于STM32硬件SPI,软件模拟的以前用51单片机已经调通了今天就不准备再拿来讲了,当然如果以后有朋友有需要也可以告诉我,我也可以重新写一篇关于51的驱动的只要有时间是没有问题的。
)因为我用的是STM32F103C8T6的系统而且是刚接触不知道别的系统和我用的这个系统有多大的差别所以我不会整个代码全贴上来就完事了,我将就着重思路配合代码写出来,这样对于刚接触单片机的朋友会有很好的作用,但是还有一点请大家要原谅,可能会存在一些说的不好的地方,毕竟我没有经过正规渠道系统地学习过电子知识,对于前辈来说存在这样那样的问题不可避免的,在此也希望大家指教!贴个图先:NRF2401+的资料大家上网查一下,我输字的速度有点不好说!下面我来说一下整个调试流程吧1.先把STM32串口一调通(因为我不知道STM32 I/O口不知可不可以像51那样并口输出数据,如果可以那就更方便啰)。
2.与NRF2401建立起通信(这个才是问题的关键);3.利用读NRF2401的一个状态寄存器(STATUS)的值并通过串口发送到PC后通过51下载软件的串口助手显示出来(如果你用液晶来调试那你太有才了,你液晶和NRF2401存在牵连可能就会给寻找不成功的原因造成困难,而且还有不少硬件工作要做)在这说一下本文只调试发送程序,致于接收只改一个程序参数就行了。
我们先来调试STM32F103C8T6的串口1吧(也就是USART1)!它是STM32F103C8T6的片上外设之一,使用它时相对来说简单了不少。
NRF24L01详细教程
NRF24L01详细教程近来课程的项目需要用到NRF24L01,用来做基本的收发,虽然资料拿到不少,但是,很多资料并不是很清晰、所带的例程并不够简洁或有不少冗余的部分,再加上对应的中文数据手册部分没翻译出来,翻译出来的不够有条理,很多地方模糊,甚至关键的地方看一两次还看不出来,导致了在学NRF24L01时花费了较多时间,所以,学完NRF24L01后,萌生了写个尽量清晰的教程的想法。
教程中的例程虽然是库开发方式,但基本都是最底层的操作才用到库函数譬如发一字节数据、GPIO置位等,虽然用的STM32,但我在看其他板子的例程时,发觉内容与流程都是差不多的,只是不同板引脚不同所导致的引脚配置的不同,不管用什么方式开发,用什么芯片,了解清楚NRF24L01如何配置,了解清楚其收发流程,基本上就会开发了,所以此文档虽然写的是以STM32为例,但看完此文档用NRF24L01基本也没什么大问题了。
教程说明:这教程是基于STMF103ZET6的,是野火的板子,例程也是从野火提供修改例程得来,用的是库开发的方式。
学习NRF24L01的步骤:1.学习SPI,SPI就是NRF24L01传送数据到单片机的一种协议,类似于USB,当然USB还是比较有难度的。
2.了解NRF24L01相关寄存器,结合中文数据手册了解NRF24L01的基本配置,收发数据前后的操作(如何启动发送接收、寄存器清空、标志位重置等)。
3.分析具体代码SPI的简介:具体的SPI教程,大家可以去野火的教程进行学习,在此只是简略介绍一下,SPI是一种一对多协议:一个主机(MCU)对应对多个从机,可以分时与多个从机通讯SPI 总线包含4 条总线,分别为SS、SCK、MOSI、MISO,其含义分别为SS:Slave Select,片选信号线,主机借此信号线选择一个从机,低电平有效。
MOSI:Master Output,Slave Input,主机数据从此线输出到从机,数据方向从主机到从机。
奋斗STM32开发板串口1中断例程详解及实验手册
淘宝店铺:
8
奋斗版 STM32 开发板例程详解———串口 1 中断实验
应答起始位。发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置 位时,分别为其产生时钟。每个功能块的详细资料如下给出。 图2 字长设置
单字节通信
清零TXE 位总是通过对数据寄存器的写操作来完成的。TXE 位由硬件来设置,它表明: ● 数据已经从TDR 移送到移位寄存器,数据发送已经开始 ● TDR 寄存器被清空 ● 下一个数据可以被写进USART_DR 寄存器而不会覆盖先前的数据如果TXEIE 位被设置,此 标志将产生一个中断。如果此时USART 正在发送数据,对USART_DR 寄存器的写操作把数据 存进TDR 寄存器,并在当前传输结束时把该数据复制进移位寄存器。如果此时USART 没有在 发送数据,处于空闲状态,对USART_DR 寄存器的写操作直接把数据放进移位寄存器,数据 传输开始,TXE 位立即被置起。当一帧发送完成时(停止位发送后),TC 位被置起,并且 如果USART_CR1 寄存器中的TCIE 位被置起时,中断产生。先读一下USART_SR 寄存器,再写 一下USART_DR 寄存器,可以完成对TC 位的清零。 注意: TC 位也可以通过对它软件写0 来清除。此清零方式只在多缓冲器通信模式 下推荐使用。
断开符号
淘宝店铺:
10
奋斗版 STM32 开发板例程详解———串口 1 中断实验
置位SBK位可发送一个断开符号。断开帧长度取决M位(见图166)。如果SBK位被置1,在完成 当前数据发送后,将在TX线上发送一个断开符号。断开字符发送完成时(在断开符号的停止 位时)SBK被硬件复位。USART在最后一个断开帧的结束处插入一逻辑1 位,以保证能识别下 一帧的起始位。 注意:如果在开始发送断开帧之前,软件又复位了SBK 位,断开符号将不被发送。如果要发 送两个连续的断开帧,SBK 位应该在前一个断开符号的停止位之后置起。
nRF24LU1快速开发系统使用手册
nRF24LU1-Quick-Dev 快速开发系统使用手册使用nRF24LU1-Quick-Dev 前请认真阅读本手册说明以及nRF24LU1的数据手册为了便于用户开发应用先进的nRF24LU1 USB+8051 Flash MCU+高速2Mbps2.4GHz 无线芯片,迅通科技提供nRF24LU1快速开发系统。
nRF24LU1开发系统包括两个无线高速USB 模块、两个开发板,MINI USB Dongle ,详细源代码,原理图,资料光盘,开发板上有按键和指示灯等,加电即可使用,可完成USB HID 协议和无线数据高速传输的全部功能,可方便地进行性能以及距离评测,并迅速掌握nRF24LU1的USB 设备开发以及高速无线通信编程和协议的设计。
时间 缩短您的开发时间,建立您对RF 产品开发的信心; 风险 接近实用的评估板,方便验证和改进,零风险;费用 只需不到一个工程师一个月的薪水或您预算内很小一部分 市场 可对多种产品及应用进行验证,实现平台式的验证与应用资料 技术资料全,上手快,可以使您立刻进入与世界同步的无线设计领域;1、 n RF24LU1-Quick-Dev 快速开发系统的安装示意图:2、nRF24LU1-Quick-Dev 开发板的安装:1、按照安装示意图,将nRF24LU1无线模块安装在开发板上。
请注意无线模块的安装方向!2、开发板上跳线帽接VBUS 端,nRF24LU1无线模块上跳线接帽VBAT 端。
3、开发板采用USB 端口供电,用USB 连线将开发板与PC 机的USB 端口连接即可工作。
3、nRF24LU1-Quick-Dev 开发板演示程序的使用:1、源代码说明程序源代码在 \ SOURCE CODE 目录上,程序分为USB DONGLE 部分和WDP KEYBOARD 部分。
该程序的特点是内嵌“WIRELESS DESKTOP PROTOCOL (简称WDP )”的协议,具有抗干扰、可靠、省电等优点,实用性强,可应用于产品设计。
nRF24LE1中文数据手册
2
nRF24LE1 nRF24LU1 模块 多功能编程器 RMB88
8
nRF24LE1 nRF24LU1 模块 多功能编程器 RMB88
1 Mbps 速率下非重叠频道间隔为 1 MHz 2 Mbps 速率下非重叠频道间隔为 2 MHz 增加型突发模式 1-32 字节动态有效载荷长度(即用户要发的数据长度可以 1-32 字节) 包自动处理(封包/解包) 自动包传输处理(自动应答确认,自动重传) 6 个数据通道可用于 6:1 星型网络
当被过滤后的射频信号高于-64 dBm 时,PRD 寄存器被置高。PRD 被置高前射频信号必须 维持至少 40us
发送模式 通过置高 POR_UP 位,置低 PRIM_RX 位,TX FIFO 不为空,rfce 位置高 10us 后置低进入 发送模式
收发器将保持在发送模式直到数据包发送完毕。如果此时 rfce=0,收发器返回待机模式 1.如 果 rfce=1,且 TX FIFO 不为空则收发器继续保留在发送模式且发送下一包数据。如果 TX FIFO 为空,收发器进入待机模式 2. PLL 工作于开环模式。每次不要将收发器置于发送模式 超过 4ms.如果开启了 Enhanced ShockBurst 特性,收发器永远不会在发送模式超过 4ms.
dianzirentaobaocomnrf24le1nrf24lu1模块多功能编程器rmb8818pwmcon0xb20x00pwm配置寄存器pwmdc00xa10x00pwm通道0周期配置pwmdc10xa20x00pwm通道1周期配置pwrdwn0xa40x00掉电控制rfcon0xe80x02射频收发器控制寄存器rngctl0xd60x00随机数发生器控制寄存器rngdat0xd70x00随机数发生器数据寄存器rstreas0xrstreas0xb10x00复位源寄存器rtc2cmp00xb40xffrtc2比较值寄存器0rt2comp10xb50xffrtc2比较值寄存器1rt2con0xb30x00rtc2配置寄存器rt2cpt000xb60x00rtc2捕获值寄存器00rt2cpt010xab0x00rtc2捕获值寄存器01rt2cpt100xac0x00rtc2捕获值寄存器10s0buf0x990x00串口0数据缓冲寄存器s0con0x980x00串口0控制寄存器s0relh0xba0x03串口0重载寄存器高字节s0rell0xaa0xd9串口0重载寄存器低字节sp0x810x07堆栈指针寄存器spimcon00xfc0x02主spi配置寄存器0spimcon10xfd0x0f主spi配置寄存器1spimdat0xff0x00主spi数据寄存器spimstat0xfe0x03主spi状态寄存器spircon00xe40x01射频收发器主spi配置寄存器0spircon10xe50x0f射频收发器主spi配置寄存器1spirdat0xe70x00射频收发器主spi数据寄存器spirstat0xe60x03射频收发器主spi状态寄存器spiscon00xbc0xf0从spi配置寄存器0spisdat0xbf0x00从spi数据寄存器spisstat0xbe0x03从spi状态寄存器t2con0xc80x00定时器2控制寄存器tcon0x880x00定时计数器控制寄存器th00x8c0x00定时器0高字节th10x8d0x00定时器1高字节th20xcd0x00定时器2高字节tl00x8a0x00定时器0低字节tl10x8b0x00定时器1低字节tl20xcc0x00定时器2低字节tmod0x890x00定时器模式寄存器w2con00xe20x802wire配置寄存器0w2con10xe10x002wir
用DFUSE软件通过USB接口在线编程STM32
1.解压DFUSE.rar。
2.安装DfuSe_Demo_V2.2.1_Setup.exe。
3.打开G:\DFUSE\STM32_USB-DfuFs-Device_Upgrade\Project\usb_Device_Firmware _Upgrade\RVMDK\STM32-FD-dfu.uv2编译程序,用Jlink仿真器或者串口将程序下载到奋斗版STM开发板中。
4.用usb线连接奋斗版STM32板,出现发现新硬件。
5.安装驱动,如果第二步默认安装的话,选择驱动C:\ProgramFiles\STMicroelectronics\DfuSe\Driver\stdfu.inf6.打开STM32奋斗板-LED闪烁工程,编译选项设置device 选择stm32f103VET6 target 在IROM1 start处设置0x8003000 ,设置好编译。
7.打开C:\Program Files\STMicroelectronics\DfuSe\BIN\dfufilemgr.exe 选择 I want to generate a dfu file from s19 ,hex or bin,然后选择s19 or hex 选择STM32奋斗板-LED闪烁工程生成的STM32-FD-FLASHLED.hex ,点击generate保存为STM32-FD-FLASHLED.dfu8.打开C:\Program Files\STMicroelectronics\DfuSe\BIN\dfusedemo.exe ,如果驱动安装正确,会显示stm device in dfu mode 然后点击右下脚的choose,选择刚才生成的STM32-FD-FLASHLED.dfu 点击upgrade,固件烧写成功。
9.点击左上角的leave dfu mode,板上的几个led灯开始闪烁了。
NRF24L01无线串口开发板程序详解
1.源程序开发环境建立1.1程序编译软件编译软件用keil C51,打开安装文件,一路点击下一步即可完成。
1.2程序下载软件使用STC ISP下载软件。
2.源程序文件整体结构工程中,只有一个main.c文件,所有程序都写在这个文件里面。
Reg51.h是包含的头文件。
是不是非常简单!3.源程序执行流程无线数据处理程序:串口数据处理程序:4.串口配置函数void serial_open(void){SCON = 0X50;AUXR |= 0X04;TL2 = 0Xc0; // 9600TH2 = 0Xfd;AUXR|=0X10;}此串口配置函数,利用单片机内部的定时器2作为波特率发生器。
共用到4个寄存器:SCON AUXR TL2 TH2SM0和SM1的位决定串口工作的4种方式:程序中,SCON=0X50,即SM0=0 SM1=1,即串口工作在“方式1”;REN=1,允许串口接收数据。
TL2和TH2是定时器2的高位和低位寄存器。
程序中,首先AUXR|=0X40,最后AUXR|=0X10。
即首先把T2x12置1,然后把T2R置1。
即首先把定时器2设置为1T模式,然后把定时器打开。
5.串口发送数据函数void senddata(uchar data_buf){SBUF = data_buf;while(!TI);TI = 0;}用到了寄存器SBUF和寄存器SCON中的TI位。
SBUF寄存器是串口收发数据缓存寄存器,放到这个寄存器中的数据,会通过串口发送出去,接收到的串口数据,也会放到这个寄存器中。
也就是串口接收和发送都是使用这个寄存器。
程序中,SBUF=data_buf,就是把data_buf给了SBUF,单片机自动把SBUF里面的数据发送到串口。
TI是串口发送数据完成标志位,当串口发送完一个数据,此位置1,置位后,需要通过软件清0。
所以通过while(!TI),来检测TI位,达到检测串口是否发送完数据的目的。
NRF24L01模块系列说明书
答:原厂给的标准收发演示例程,有 51 PIC STM32 的,都是标准 C 语言编写, 因此即使移植其它单片机也很快
14 问:拿到模块和程序后,自己焊接测试电路和移植程序,下载进去后通讯不 了。
答:首先不用怀疑模块的问题。生产工艺成熟,不良率在不测试时候低于 1%, 何况全部测试,不良率低于千分之一。大部分新手自己焊接电路移植程序不良是 因为移植时候硬件错误或者软件增删错误引起,因为即使很小点错误,也能导致 整个程序的失效,所以建议自己移植程序时候要很小心,尽量照搬我们的例程, 等整个程序跑起来再做修改。若实在搞不定,可以借用我们的测试板,或者付出 很少费用就能买到配套的测试板,这样能给客户节省不少的时间。
11 问 NRF24L01 系列模块可以一对多发送或者多对一接收吗?
答:完全可以,70%客户都这么用的。
12 问:我是新手,你们提供哪些方面的技术支持?
答:2.4G 系列模块属于有点技术难度的产品,若完全依靠客户参照规格书 写程序,会浪费客户一个多礼拜的时间,比较幸运的是我们提供了参考程序,并 且提供和程序配套的测试板借用或购买,可以让客户快速体验模块的性能。建议 项目比较急的客户选用,价格每个 20 元成本价格销售,可以给客户节省好几天 的调试时间,很划算。
答:一款原产台湾,一款原产品挪威,随着众多 IC 晶圆厂自己无线 IC 的 推出,兼容模块的价格从 2008 年的 20 元左右一直跌落到目前的 4.5,利润由当 初的 10 元降到现在的 0.5 元以下,其中挪威版的出的最早,价格虽然猛降,但 是始终拼不过台产芯片。
3 问:挪威版本的 NRF24L01+和台产版的哪个使用效果会更好? 答:台产版的完全克隆挪威版的,并在以前的基础上加了+7DB 的功放电路,
nRF24L01P快速开发系统使用手册
nRF24L01-Quick-Dev2Mbps 无线快速开发系统使用手册为了便于用户开发应用先进的nRF24L01高速2Mbps无线芯片开发,迅通科技另外可提供nRF24L01快速开发系统。
nRF24L01开发系统包括两个无线高速多频道模块、两个开发板(含可更换MCU及用户开发空间),详细源代码,原理图,资料光盘,开发板上有MCU、按键和指示灯等,加电即可使用,可完成无线双向数据高速传输的全部功能,并可方便地进行性能以及距离评测,并迅速掌握nRF24L01的多频以及高速无线通信编程和协议的设计。
时间缩短您的开发时间,建立您对RF产品开发的信心;风险接近实用的评估板板,方便验证和改进,零风险;费用只需不到一个工程师半个月的薪水或您预算内很小一部分市场可对多种产品及应用进行验证,实现平台式的验证与应用资料技术资料全,上手快,可以使您立刻进入与世界同步的无线设计领域;1、n RF24L01快速开发系统的安装示意图:(1) 按照安装示意图,将开发板与无线模块正确连接。
(2) 将开发板接上直流稳压电源,注意电源输入为4.5~6V(不能超过6V),由于开发板内部没有防反接保护电路,请注意检查输入信号的极性。
正确接上电源后,开发板上的LED灯会闪亮,表示自检成功。
3、nRF24L01开发板的使用:1.测试1:按下其中任何一块开发板上的按键,另一块开发板上对应的红色LED点亮,表示数据发送成功;每块开发板板均可进行双向数据的高速传输与控制,用户还可以更改源程序进行多频无线通信。
2.测试2(串口传输):(1)此测试进行前需要先将开发板与计算机串口通过九芯串口电缆相连(2)在计算机上运行任何一种串口调试工具(如串口专家),用来接收和显示无线数据,串口速率设定为19200,“8,N,1”;(3)正确接上电源;(4)按下开发板的按键,对应的LED灯将点亮,同时另外一块开发板将接收到的键值数据通过串口发送到PC并在串口调试工具上实时显示。
NRF24l01使用手册函数介绍
NRF24l01使用手册以及函数指令寄存器介绍芯片简介NRF24L01 是NORDIC 公司最近生产的一款无线通信通信芯片,采用FSK 调制,内部集成NORDIC 自己的Enhanced Short Burst 协议。
可以实现点对点或是1 对 6 的无线通信。
无线通信速度可以达到2M(bps)。
NORDIC 公司提供通信模块的GERBER 文件,可以直接加工生产。
嵌入式工程师或是单片机爱好者只需要为单片机系统预留5 个GPIO,1 个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU 系统构建无线通信功能。
NRF24L01功能框图NRF24L01 的框图如Fig.1 所示,从单片机控制的角度来看,我们只需要关注Fig.1 右面的六个控制和数据信号,分别为CSN、SCK、MISO、MOSI、IRQ、CE。
CSN:芯片的片选线,CSN 为低电平芯片工作。
SCK:芯片控制的时钟线(SPI 时钟)MISO:芯片控制数据线(Master input slave output)MOSI:芯片控制数据线(Master output slave input)IRQ:中断信号。
无线通信过程中MCU 主要是通过IRQ 与NRF24L01 进行通信。
CE:芯片的模式控制线。
在CSN 为低的情况下,CE 协同NRF24L01 的CONFIG 寄存器共同决定NRF24L01 的状态(参照NRF24L01 的状态机)。
NRF24L01状态机NRF24L01 的状态机见Fig.2 所示,对于NRF24L01 的固件编程工作主要是参照NRF24L01 的状态机。
主要有以下几个状态Power Down Mode:掉电模式Tx Mode:发射模式Rx Mode:接收模式Standby-1Mode:待机1 模式Standby-2 Mode:待机2 模式上面五种模式之间的相互切换方法以及切换所需要的时间参照Fig.2。
STM32实现USB转串口功能(含源码)
STM32实现USB转串⼝功能(含源码)之前的⽂章中介绍过STM32的USB接⼝虚拟串⼝的功能。
《STM32CubeMX之USB从机》。
本篇⽂章在此基础上,以STM32F407为例,介绍USB转串⼝功能的实现。
要实现USB转串⼝的功能,需要将单⽚机真实串⼝(这⾥以USART1为例)的收发数据与USB ⼝进⾏交互。
⽤过USB虚拟串⼝的朋友可能知道,要实现该功能,还存在以下问题:1.电脑上设置的串⼝波特率不影响USB接⼝传输的速率。
2.怎样获取电脑上串⼝助⼿设置的波特率,以设置USART1使其波特率与串⼝助⼿⼀致。
波特率设置其实STM32CubeMX⽣成的程序中已经提供了相关的接⼝,只需要⽤户⾃⼰实现即可。
打开usbd_cdc_if.c⽂件,CDC_Control_FS函数中,添加如下程序。
其中上⾯的注释是系统⽣成的,根据注释添加相应的红框中的程序。
LineCoding是⼀个结构体:USBD_CDC_LineCodingTypeDef LineCoding ={ 115200, /* 波特率*/ 0x00, /* 停⽌位-1*/ 0x00, /* 校验 - none*/ 0x08 /* 数据位 8*/};USBD_CDC_LineCodingTypeDef的格式也是系统定义好的。
添加完成后,在电脑的串⼝助⼿上更改波特率时,系统会调⽤这段程序,重新配置USART1的波特率,使两者保持⼀致。
剩下的功能就是数据转发,即将USB接收的数据通过USART1发送出去,将USART1接收的数据发送到USB接⼝。
USB数据转发到USART1同样是在usbd_cdc_if.c⽂件中,修改USB接收函数CDC_Receive_FS。
将原来的程序屏蔽,添加串⼝发送的程序。
添加串⼝发送完成中断回调函数(前提是使能串⼝发送中断):void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){ USBD_CDC_ReceivePacket(&hUsbDeviceFS);} USART1数据转发到USB本例程是通过中断⽅式接收USART1数据,并通过接收超时时间来判断⼀帧数据接收完成。
STM32的USB虚拟串口设计
毕业设计 [论文]题目:基于STM32的USB虚拟串口学院:专业:姓名:学号:指导老师:完成时间:2014年5月19日摘要USB接口由于支持热插拔和标准统一等特点得到了广泛应用,越来越多的电脑设备开始采用USB接口进行数据的传输,而如何在不改变现有应用软件的情况下,将设备移植到USB接口成为人们研究的热门。
论文以USB通信设备类中的抽象控制模型为基础,研究了通信设备类及实现虚拟设备的原理,设计并实现了基于通信设备类的虚拟串口驱动程序。
论文研究设计了基于通信设备类的虚拟串口驱动程序的结构和实现方案,程序主要由通信命令转换和数据传输两部分构成,通信命令转换符合通信设备类中抽象控制模型的规范,数据传输部分对现有虚拟串口的实现技术进行了改进。
论文的主要工作如下:1)研究了USB协议的请求和传输模式,分析了通信设备类实现虚拟设备的方案。
2)给出了一种符合通信设备类中抽象控制模型的虚拟串口实现方案。
该方案提供了一种基于通信设备类开发虚拟设备的模板,对设计中的诸多问题进行了详细的说明,并改进了虚拟串口驱动程序中数据的处理流程。
3)将改进后的数据处理流程应用于虚拟串口的实现中,生成了一种基于通信设备类的稳定、高速的虚拟串口。
最后,在串口测试软件下对虚拟串口驱动程序进行了测试,达到了预期目标。
关键字:通讯设备类;枚举过程;虚拟串口程序;抽象控制模型AbstractUSB interface supports plug and play which has unified standards, so it has a wide ra nge of applications. More and more computer device use USB interface to transfer data, so how to make many old deaves to support USB interface without changing current applicati on is becoming the hot field.USB Communication Device Class and it's abstract control model are studied, princip les of Communication Device Class and implementation techniques of abstract device are a lso analyzed in the thesis. On the basis of this, design and implementation of virtual serial port driver based on Communication Device Class are given.The overall structure and implementation scheme of virtual serial port driver based on CDC are designed. The virtual serial port driver is made up of two parts which are commu nication command transfer module and data transmission module. The communication com mand transfer module satisfies the specification of abstract control model, and the data tran sfer part improves the technique of current virtual serial port. The main works in the thesis are as follows:1)The request and transfer model for USB protocol are studied, and the implementation techniques of virtual serial port are analyzed.2)The implementation scheme of virtual serial port driver that satisfy abstract control mode in CDC is graven. A new template for the development of virtual serial port based o n CDC is brought out, and it describes some issues for the virtual serial port driver in d etails, at the same time, the processing steps for virtual serial port driver is improved.3)The improved data processing steps for virtual serial port driver is applied in the implementation of ritual serial port driver, and a stable, high-speed virtual serial port is ma de. At last, the test for the virtual serial port driveon ActiveSync is given, and the test r esult show that it's function is achieved the requirement goals.Keywords: Communication Device Class ;Enumeration Process;Virtual Serial Port Driver ;Abstract Control Model目录摘要 (1)Abstract (2)目录 (3)第1章绪论 (4)1.1 USB虚拟串口设计背景及其意义 (4)1.2 USB虚拟串口设计研究方法及目标 (4)1.3 USB虚拟串口设计国内外研究现状 (5)第2章USB及串口简单介绍 (7)2.1 USB简介 (7)2.2 串口简介 (7)2.3 USB虚拟串口简介 (8)第3章USB和USB CDC协议 (9)3.1 通用串行总线USB (9)3.1.1 USB协议相关知识介绍 (9)3.1.2 USB协议枚举过程分析 (10)3.2 USB CDC协议 (11)3.3 USB通信过程 (12)第4章虚拟串口的实现 (15)4.1 串口的工作原理 (15)4.2 USB虚拟串口设计 (16)4.2.1 STM32 USB部分说明 (16)4.4.2 USB电路连接 (16)4.2.3 虚拟串口程序设计 (17)第5章结论 (20)参考文献 (22)致谢 (23)附录: (24)第1章绪论1.1 USB虚拟串口设计背景及其意义USB是一种统一的传输规范,但是接口有许多种,最常见的就是咱们电脑上用的那种扁平的,这叫做A型口,里面有4根连线,根据谁插接谁分为公母接口,一般线上带的是公口,机器上带的是母口。
STM32-USB使用方法(DOC)
STM32-USB使用方法开发板买的是奋斗mini开发板,芯片是:STM32F103VET6. 如果需要源程序keil4-arm工程,上位机vb。
加qq339396264要程序。
USB开发涉及主机和设备,为了避免开发驱动程序,使用Windows自带的驱动程序。
所以设备枚举成HID类设备。
USB 鼠标就是标准的USB-HID设备。
不过操作系统阻止了应用程序直接访问USB鼠标返回的报告。
所以本例使用自定义HID 设备。
一来免去了开发驱动程序,二来自定义的HID设备应用程序和设备可以自由收发数据(仅指数据内容)。
本文主要介绍STM32的USB模块的简单使用,不会介绍USB协议。
主要是介绍一下STM32F103的USB模块使用。
USB模块从初始化首先是配置和使能时钟下面是时钟的初始化:void Set_USBClock(void){//RCC_USBCLKSource_PLLCLK_1Div5表示【USB时钟= PLL时钟除以1.5】【72/1.5=48MHz】RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);//【使能配置好了的USB时钟】}首先系统时钟要设置为72MHz,然后配置USB时钟为48MHz并使能。
然后是配置中断void USB_Interrupts_Config(void){#define USB_LP_CAN1_RX0_IRQn 20NVIC_InitTypeDef NVIC_InitStructure;//【使能USB中断】NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn; //【USB低优先级中断】NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}然后初始化模块的一些寄存器USART_send_str("USB断开\r\n");USB_DISCONNECT//这是断开1.5k上拉电阻delay(0x7AFFFF);//延时一会USB_CONNECT//使能1.5K上拉电阻USART_send_str("USB连接\r\n");DADDR = 0x0080;//USB模块使能位。
nRF24LXX USB Flasher 编程器用户使用手册
nRF24LXX USB Flasher编程器用户使用手册/3354/一 功能介绍nRF24LXX USB Flasher编程器用于对nordic公司出品的nRF24LE1,nRF24LU1P等芯片内Flash进行烧录编程。
该编程器能提供一般的编程操作,如代码载入,编程,校验,读取以及代码保护功能。
同时下载口提供3.3V电压输出,能在下载结束后直接复位芯片进入代码执行阶段,方便用户开发工作。
编程器使用真正USB接口和电脑进行通信,下载速度快,对16K Flash的编程操作过程只需3~5秒,节省用户开发时间。
另外该编程器PC端有两款软件可供使用。
其中一款软件为图形界面式软件,该软件功能强大,使用直观方便。
另外一款为DOS控制台软件,以命令行方式操作,该软件能集成在Keil-C51开发环境中作为其第三方编程软件使用,使开发过程更为方便。
编程器套件组成:下载器硬件 一套10芯排线 一根USB连接线 一根PC端图形操作软件 一款PC端DOS控制台软件 一款二 下载器介绍下载器USB接口连接PC端USB接口,10芯ISP下载口连接目标芯片,该10芯下载口信号顺序和nordic官方的下载器顺序一致。
另外板载电源指示灯和下载器工作指示灯,用于指示下载器工作状态。
10芯ISP下载信号说明信号顺序 信号顺序1 GND 6 MISO2 NC 7 CSN3 SCK 8 RESET4 MOSI 9 NC5 PROG 10 3V3板载2个LED,靠近USB接口的LED用于指示下载器是否通电,靠ISP下载端口的LED 用于指示下载是否进行。
三 PC端软件介绍PC端软件具备hex格式文件打开功能保存,代码HEX查看编辑功能。
具备对芯片Flash 的读取,编程,校验,全片擦除,以及代码保护功能。
同时具备了这些功能的一键自动操作。
另外可以读取信息页(Info Page)中的内容。
软件界面中还能实时指示USB连接状态。
如果USB处于断开状态,其他任何编程读取等操作将无法使用。
奋斗版STM32开发板V2.0硬件说明书
奋斗版STM32开发板V2.0的硬件说明1. 供电电路:AMS1117-3.3输入+5V,提供3.3V的固定电压输出,为了降低电磁干扰,C1-C5为CPU 提供BANK电源(VCC:P50、P75、P100、P28、P11 GND:P49、P74、P99、P27、P10)滤波。
CPU的模拟输入电源供电脚VDDA(P22)通过L1 22uH的电感与+3.3V VDD电压连接,CPU的模拟地VSSA(P19)及VREF-(P20)通过R1 0欧电阻与GND连接。
VREF+(P21)采用VDDA(P22)电源基准。
AMS1117-2.5输入+5V,提供2.5V的固定电压输出,为MP3电路VS1003提供所需的电压。
为RTC的备份电源采用V1 3.3V锂离子片状电池。
2. 启动方式设置:Boot1—Boot0(P37,P94): x0: 内部程序存储区启动01:系统存储区启动(为异步通信ISP编程方式)在此将BOOT1始终设置为0, BOOT0为可变的状态,在正常模式下将其置为0,在ISP 编程时将其置为1。
用JP1跳线块设置,开路为ISP模式,短路为正常运行模式。
3. 时钟源电路:外部晶体/陶瓷谐振器(HSE)(P12、P13):B1:8MHz晶体谐振器,C8,C9谐振电容选择10P。
系统的时钟经过PLL模块将时钟提高到72MHz。
低速外部时钟源(LSE)(P8、P9):B2: 32.768KHz晶体谐振器。
C10,C11谐振电容选择10P。
注意:根据ST公司的推荐, B2要采用电容负载为6P的晶振,否则有可能会出现停振的现象。
4. SPI存储电路:D2 AT45DB161(2M Bytes)CPU采用SPI1端口PA7-SPI1-MOSI(P32)、PA6-SPI1-MISO (P31)、PA5-SPI1-SCK(P30)、PC4-SPI1-CS2(P33)控制读写访问, SPI1地址:0x4000 3800 - 0x4000 3BFF5. 显示及触摸接口模块:显示器采用2.4” TFT320X240LCD(控制器ILI9325), 采用CPU的FSMC功能,LCD片选CS采用FSMC_NE1(P88),FSMC_A16(P58)作为LCD的RS选择,FSMC_nWE(P86)作为LCD的/WR, FSMC_nOE(P85)作为LCD的/RD, LCD的RESET脚用CPU的PE1(P98)(LCD-RST),FSMC_D0---FSMC_D15和LCD的D1-D8 D10-D17相互连接,触摸屏接口采用SPI1接口,片选为PB7-SPI1-CS3,由于LCD背光采用恒流源芯片PT4101控制,采用了PWM控制信号控制背光的明暗, PWM信号由PD13-LIGHT-PWM来控制。
奋斗STM32开发通用IO口例程讲解
通用IO口(GPIO)例程实验1.GPIO功能描述每个GPI/O 端口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16 位复位寄存器(GPIOx_BRR)和一个32 位锁定寄存器 (GPIOx_LCKR)。
根据数据手册中列出的每个I/O 端口的特定硬件特征, GPIO 端口的每个位可以 由软件分别配置成多种模式。
− 输入浮空− 输入上拉− 输入下拉− 模拟输入− 开漏输出− 推挽式输出− 推挽式复用功能− 开漏复用功能每个I/O 端口位可以自由编程,然而I/0 端口寄存器必须按32 位字被访问(不允许 半字或字节访问)。
GPIOx_BSRR 和GPIOx_BRR 寄存器允许对任何GPIO 寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ 时不会发生危险。
下图给出了一个5V兼容I/O端口位的基本结构。
(1) VDD_FT 对5 伏兼容I/O 脚是特殊的,它与VDD 不同端口位配置表2 通用I/O(GPIO)刚 开 I/O (CNFx[1:0]=01b MODEx[1:0]=00b)。
复位后,JTAG 引脚被置于输入上拉或下拉模式:− PA15:JTDI 置于上拉模式− PA14:JTCK 置于下拉模式− PA13:JTMS 置于上拉模式− PB4: JNTRST 置于上拉模式当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚。
可以以推挽模式或开漏模式(当输出0 时,只有N-MOS 被打开)使用输出驱动器。
输入数据寄存器(GPIOx_IDR)在每个APB2 时钟周期捕捉I/O 引脚上的数据。
所有GPIO 引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以不被激活。
2.1 输入配置当I/O 端口配置为输入时:● 输出缓冲器被禁止● 施密特触发输入被激活● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接● 出现在I/O 脚上的数据在每个APB2 时钟被采样到输入数据寄存器● 对输入数据寄存器的读访问可得到I/O 状态2.2 输出配置当I/O 端口被配置为输出时:● 输出缓冲器被激活− 开漏模式:输出寄存器上的0 激活N-MOS,而输出寄存器上的1 将端口置于高阻状态(P-MOS 从不被激活)。
利用STM32CUBE创建一个虚拟串口
利用STM32CUBE创建一个虚拟串口由于现在的PC机大多都没有串口了,但PC机上的很多应用程序却使用串口,为了让PC机与STM32处理器进行通信,可以让STM32处理器,以串行方式与外界进行通信,再用CH340等芯片,实现USB转串口的功能,实现虚拟串口。
不过这样做需要额外的芯片和相关电路,不很理想。
利用STM32处理器自身的USB功能,就可以实现虚拟串口。
由于USB是一个很复杂的东西,所对应的代码很多,如果采用操作寄存器或标准库的方式,都要编写很多代码,也容易出错,而采用STM32CUBE就方便多了。
首先要利用STM32CUBE,选择芯片,比如芯片型号为STM32F103ZET6,如下图所示:然后在Pinout选项页中,先选择“RCC”项,按下图设置:再选择“USB”选项,按下图设置:这一步的最后再选择“USB_DEBICE”,按下图设置:下面要设置时钟,进入“Clock Configuration”选项页,按下图设置:请注意:上图的设置必须保障给USB模块的时钟信号是精准的48MHz,不允许有偏差。
然后进行工程设置,点击菜单项“Porject→Settings...”,这时将弹出一个对话框窗口如下:在该对话框窗口上,输入工程名、工程存放的文件夹、所用的开发工具之后,点击“OK”按键,关闭该对话框。
最后点击菜单项“Porject→Generate Code”,生成工程。
本人用的开发工具是IAR,打开该工程,如下图所示:这个工程已经包含了不少文件,建立了基本的程序框架和初始化代码,只要进一步添加应用程序代码就可以了。
下面将围绕虚拟串口进一步编写程序:在这个工程中,有一个“usbd_cdc_if.c”文件,进行USB虚拟串口进行数据的发送和接收时,首先要在usbd_cdc_if.c文件中修改“APP_RX_DATA_SIZE”、“APP_TX_DATA_SIZE”两个宏,它们用于数据的接收和发送缓冲区的大小;然后要声明一个结构体(并初始化),其代码如下:USBD_CDC_LineCodingTypeDef LineCoding = { 115200, /*baud rate*/ 0x00,/*stop bits - 1*/ 0x00, /*parity - none*/ 0x08, /*nb. of bits 8*/ };这段代码用于指示串口的基本设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验NRF24L01+转 USB 虚拟串口实验实验平台:奋斗版STM32开发板Tiny 实验内容:板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC识 别出来,虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手类 软件选择该串口号。
进入串口软件界面,可以通过软件无线收发一帧长度最长 为32字节的数据。
该例程可以和V3及MINI板的NRF24L01 UCGUI例程配合使用。
预先需要掌握的知识 2.4G通信模块NRF24L01 1. 产品特性2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用 支持六路通道的数据接收 低工作电压:1.9 1.9~3.6V 低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率) 多频点:125 频点,满足多点通信和跳频通信需要 超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线) 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
低应用成本:NRF24L01 集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等, NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口, 便于使用低成本单片机。
便于开发:由于链路层完全集成在模块上,非常便于开发。
自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制 自动存储未收到应答信号的数据包 自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程 载波检测—固定频率检测 内置硬件CRC 检错和点对多点通信地址控制 数据包传输错误计数器及载波检测功能可用于跳频设置 可同时设置六路接收通道地址,可有选择性的打开接收通道 标准插针Dip2.54MM 间距接口,便于嵌入式应用2.基本电气特性淘宝店铺:1奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验3. 引脚定义:4.工作方式NRF2401有工作模式有四种: 收发模式 配置模式 空闲模式 关机模式 工作模式由CE 和寄存器内部PWR_UP、PRIM_RX 共同控制,见下表:淘宝店铺:2奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验4.1 收发模式收发模式有Enhanced ShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种,收发模式由器件配置字决定,具体 配置将在器件配置部分详细介绍。
4.1.1 Enhanced ShockBurstTM收发模式Enhanced ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制 器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。
与射频协议 相关的所有高速信号处理都在片内进行, 这种做法有三大好处: 尽量节能; 低的系统费用(低速微处理器也能进行高速射频发射); 数据在空中停留时间短,抗干扰性高。
Enhanced ShockBurstTM技术同时也减小了整个系统的平均工作电流。
在Enhanced ShockBurstTM收发模式下, NRF24L01自动处理字头和CRC校验码。
在接收数据时,自动把字头和CRC校验码移去。
在发送数据时, 自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将时发送过程完成后。
4.1.1.1 Enhanced ShockBurstTM发射流程 A. 把接收机的地址和要发送的数据按时序送入NRF24L01; B. 配置CONFIG寄存器,使之进入发送模式。
C. 微控制器把CE置高(至少10us),激发NRF24L01进行Enhanced ShockBurstTM发射; D. N24L01的Enhanced ShockBurstTM发射(1) 给射频前端供电; (2)射频数据打包(加字头、CRC校验码); (3) 高速发射数据 包; (4)发射完成,NRF24L01进入空闲状态。
4.1.1.2 Enhanced ShockBurstTM接收流程 A. 配置本机地址和要接收的数据包大小; B. 配置CONFIG寄存器,使之进入接收模式,把CE置高。
C. 130us后,NRF24L01进入监视状态,等待数据包的到来; D.当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、地址和CRC校验位移去; E. NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器; F. 微控制器把数据从NewMsg_RF2401 读出; G. 所有数据读取完毕后,可以清除STATUS寄存器。
NRF2401可以进入四种主要的模式之一。
4.1.2 ShockBurstTM收发模式 ShockBurstTM收发模式可以与Nrf2401a,02,E1及E2兼容。
4.2 空闲模式NRF24L01的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。
在空闲模式 下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关。
4.3 关机模式在关机模式下,为了得到最小的工作电流,一般此时的工作电流为900nA左右。
关机模式下,配置字的内容也会被保持在NRF2401 片内,这是该模式与断电状态最大的区别。
5、NRF24L01 的SPI 配置 SPI 指令设置用于SPI 接口的常用命令见下表。
当CSN 为低时,SPI 接口开始等待一条指令,任何一条新指令均由CSN 的由高 到低的转换开始多机通信框图淘宝店铺:3奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验串行接口指令设置淘宝店铺:4奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验淘宝店铺:5奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验淘宝店铺:6奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验淘宝店铺:7奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验淘宝店铺:8奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验淘宝店铺:9奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验淘宝店铺:10奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验5. 应用实例5.1. 设计要求板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC设别出来, 虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手类软件选择 该串口号。
进入串口软件界面,可以通过软件无线收发一帧长度最长为32字节 的数据。
5.2 硬件电路设计需要将NRF24L01+插入TINY板上的XS5接口,XS5的接口定义了SPI的标示, 板子通过USB线插入到PC的USB接口上,第一次实 验的话,需要运行光盘内资料目录下的VCPDriver_V1.1_Setup.exe来安装USB虚拟串口驱动。
Tiny与NRF24L01+的连接关系 TINY NRF24L01 PIN4-PB12: SPI2 CS----------------PIN4 PIN5-PB13:SPI2 SCK------ ------PIN5 PIN7-PB14: SPI2 MISO------------PIN7 PIN6-PB15: SPI2 MOSI------------PIN6 PIN3-PB1 : NRF24L01 CE---------PIN3 PIN8-PA0 : NRF24L01 IRQ--------PIN8 PIN1-GND : 地 -------PIN1 PIN2-3V : 3.3V ------PIN25.3 软件程序设计根据任务要求,程序内容主要包括: 1. 2. 3. 4. 5. 初始化串口 初始化USB 初始化SPI2及NRF24L01接口 中断源配置 各通信函数的编写。
本例程完成了以下功能: (1) 2.4GNRF24L01+与USB虚拟串口互转淘宝店铺:11奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验(2) 2.4GNRF24L01+转RS-232串口1 (3) USB虚拟串口与RS-232串口1互转 整个工程包含5类源文件:startup--startup_stm32f10x_md.s由于奋斗板采用的是STM32F103中容量存储器芯片,因此采用STM32标准库自带的中容量存储器芯片启动代码,这个文件已经配置好了初始状态,以及中断向量表。
可以直接在工程里使用,如果你在以后的应用 中采用了大存储器或者小存储器STM32芯片,可以将启动代码换为startup_stm32f10x_hd.s startup_stm32f10x_ld.s。
fwlib--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。
stm32f10x_rcc.c 关于对系统时钟设置的函数。
stm32f10x_spi.c ST公司的标准库,包含了关于和SPI相关的函数。
stm32f10x_exti.c ST公司的标准库,包含了和EXTI外部中断相关的函数。
ST公司的标准库,包含了 或者stm32f10x_usart.c ST公司的标准库,包含了关于对USART设置的函数。
Misc.c ST公司的标准库,包含了关于中断设置的函数。
usb-fs-device-组项下的C文件都是和全速USB有关系的库函数。
CMSYS—是关于CORETEX-M3平台的系统函数及定义 USER—main.c NRF24L01.c hw_config.c 例程的主函数。
包含和NRF24L01相关的函数 包含和硬件平台有关系的函数 中断服务程序stm32f10x_it.c5.4程序流程在main()函数里,顺序执行系统时钟配置及各外设的初始化操作。
淘宝店铺:12奋斗版 STM32 开发板例程手册———NRF24L01+转 USB 虚拟串口实验void USART_Init1(USART_TypeDef* USART1)定义了串口1的初始化,将端口PA9、PA10复用为串口1的发和 收,数据格式配置以下函数所设置的式样。