
这个案子是我基于自己设计的QST系统完成的案子,总是想着怎么和Andriod手机相连。尝试用usb虚拟串口连接,终于通了。 硬件:手头一个现成的带各种传感器的板子(bmp280,bma250,hmc5883,gps)+STM32F103 软件:基于自己设计的qst软件系统+USB虚拟串口驱动。 *居然可以热插拔usb,连上手机的otg线。这里要感谢usbhost的开发者,网上几乎找不到andriod手机连接虚拟串口的程序。 *虚拟串口连接winxp,win10也是可以的。 *软件还没法开放出来,代码需要整理一下。 项目完成后,大致的效果是,串口不断输出板子上各种传感器的参数,每个传感器的采集数据都带10秒以内的精确到毫秒的时间戳,输出: 气压 (采集速度 5次/秒) 温度 (采集速度 5次/秒) 海拔 (采集速度 5次/秒) 陀螺仪x,y,z (采集速度 ?次/秒) 姿态(倾斜度,俯仰角)(采集速度 5次/秒) 指南角 (采集速度 10次/秒) gps经纬度 (采集速度 1次/秒) gps工作状态 (采集速度 1次/秒) 我在想如果usb虚拟串口要跑到什么速度才能满足这种密集的数据输出。 最后写一个pc软件 ![]() Andriod手机抓到的usb数据。 ![]() 演示视频 |
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现
Andriod源代码包,在bin目录下可以找到编译好的安装apk。
验证是ok的,手机需要取得root权限。我用的手机是红米note2
顺便show一下我写的qst系统,用户层代码,是不是和Arduino有点像呢?
#include "qst_system.h"
const char S_JSON_BARO_HEAD[]={"\"Baro\":["};
uint32_t t,json_pkg_t;
void setup(void)
{
ioMode(PB0,OUTPUT);
usbMode(0,0);
t = 0;
json_pkg_t=0;
}
void loop(void)
{
WEATHER_INFO_TYPE *w = (WEATHER_INFO_TYPE*)qstMessage(&BaroTskInfo);
if( compSystick(t) ){
if( ioRead(PB0)==LOW ){
ioWrite(PB0,HIGH);
t = msSystick()+10;
}else{
ioWrite(PB0,LOW);
t = msSystick()+990;
}
}
//
if( compSystick(json_pkg_t) ){
json_pkg_t = msSystick()+1000;
printf("]\r\n%s\r\n",S_JSON_BARO_HEAD);
}
if( w->update ){
printf("{\"t:\"%d,\"temp\":%d,\"press\":%d.%02d,\"alt\":%d}\r\n",w->t%10000,w->temp/100,w->press/100,w->press%100,w->altitude);
w->update = 0;
}
}
[飞鸽的qst系统的介绍]
QST是“飞鸽”基于STM32 ARM架构的一个前后台开源系统。
QST的优势
1.基于32位的cortex-m3的ARM
2.采用嵌入式系统常用的KEIL ARM编译和调试环境,调试工具采用应用广泛的ULINK/JLINK JTAG仿真器。
3.分层系统架构(灵活、强大、简单):ST官方库 模块层 QST系统层用户应用层
4.充分利用ARM本身的中断来进行实时任务处理,设计良好的程序主循环运行频率同样可以达到非常高的调用频率。
谢谢分享啊 學習中