Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
图片采集存储终端【赵洋】
发布于 2020-04-14 11:00:24 浏览:4183
订阅该版
**方案描述** stm32用485图像采集传感器进行拍照,随后将图片数据传输至外部flash使用文件系统存储,可通过shell使用串口YModem协议传输到电脑。  **功能列表** * 命令设置和获取图片质量 * 命令获取电源电压 * 命令重启mcu * 命令获取5min计数I/O低电平有效 * 命令格式化flash * 命令读取文件 * 命令扫描flash所以文件和文件夹 * 命令获取flash储存空间信息 * 命令将flash文件传输出 **内部API实现功能** * 支持报文存储为txt文档 * 支持日志(类似printf)存储为txt文档 * 呼吸灯 * 摄像头拍照读数据等一系列api **演示**   
下载附件[STM32F205V1 (NANO).7z]
查看更多
6
个回答
默认排序
按发布时间排序
aozima
2020-04-14
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!
这拍个照不容易啊,楼主传个样片看看。
赵撵猪
2020-04-14
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=477070&ptid=424178][color=#999999]aozima 发表于 2020-4-14 11:45[/color][/url][/size] 这拍个照不容易啊,楼主传个样片看看。[/quote] 用的摄像头成品,拍完照片数据485传输到mcu的
赵撵猪
2020-04-28
这家伙很懒,什么也没写!
重新用markdown整理了一下 [img]static/image/hrline/1.gif[/img] [md]## 图片采集存储终端【赵洋】 ### 方案描述  使用图片传感器进行拍照,通过485传输到mcu,mcu使用文件系统操作flash进行存储,shell可对文件系统进行操作。 **功能分解** - flash驱动 - 文件系统和flash接口实现 - 图片传感器数据获取实现 - ymodem实现 - shell与文件系统以及ymodem对接实现 RT-Thread相关内容:RT-Thread Nano 、线程 、互斥量 、软件定时器。 **[论坛原帖](https://www.rt-thread.org/qa/thread-424178-1-1.html)** ### 硬件 使用STMF205RET6,带有485和外部w25q128 flash,图像传感器是SXH-V1/V2系列串口摄像头 ### 软件 #### 1、MCU配置 使用cube mx生成代码 - ###### shell和485串口配置(略) - ###### spi配置  - ###### 文件系统配置  其中有个配置长文件名推荐使用动态,所以我们需要将系统的设置的调大才能正确运行文件系统 ,也可将 syscall.c文件中的ff_memalloc和ff_memfree和操作系统对接。 - ###### RT-Thread Nano 配置  #### 2、外部flash驱动实现 外部FLASH产品型号为W25Q128,容量:16Mbytes,一页为256个字节,一个扇区为4K个字节,一块有12个扇区,共有256个块。 我们需要完成的是读取数据和写数据 ###### 1) 读取数据 首先需要进行测试FLASH是否是存在的,可以通过FLASH型号进行对比,步骤是,先将设备上电操作,发送读取Device ID指令(90H),FLASH返回Device ID值。 读取内部数据时,步骤是,发送一个字节读指令(03H)接着发送三个字节地址,FLASH就返回所需要的数据,可以一直读完整个FLASH。 ###### 2) 写数据 FLASH有一个保护机制叫作写保护,需要进行允许写入使能指令(06H)之后并且数据区域擦除过才可以开始进行写数据,写数据可以一次性写256个字节最多,也就是一页的数据,如果超过一页数据那么会出现以设定地址为头页数据为尾形成环形,页编程时地址需要对齐,一页256个字节,所以页编程的地址末字节为0。 **总结**:写数据步骤为,先进行写使能,擦除扇区,写使能,写入数据。 #### 3、文件系统与FLASH驱动对接 文件系统移植部分软件已经生成,文件系统的意义是用户实现底层驱动,也就是对存储设备的读写状态等驱动,用户就可以使用文件系统的方式进行抽象存储数据管理了,比如打开一个文本文件,创建个文件夹。 所需实现的文件系统底层驱动函数均在user_diskio.c文件中。 **需要实现函数** ###### 1) USER_initialize函数 USER_initialize函数是初始化的作用,比如开启外部FLASH电压,获取DI看外部FLASH是否工作正常。我们使用读取ID函数,成功返回FR_OK代表成功 ###### 2) USER_status函数 USER_status用来查看外部FLASH工作状态,比如写大量数据的时候会出现忙状态,此时就不可以进行数据的写入,比如写保护状态,就不可以写入数据。这里我们使用FLASH寄存器只看BUSY状态,就是写多个数据时等处理完,BUSY状态取消返回正确值。 ###### 3) USER_read函数 USER_read用来读取数据,只需要将我们写好的读取数据函数封装起来就可以了。 ###### 4) USER_write函数 写数据函数,因为我们的FLASH写是一次性写256字节最多,这里参数是以扇区的方式,就需要将写函数多次写入,写完一页将地址变为下一页写入,直到完成全部写入。 ###### 5) USER_ioctl函数 这里是文件系统的一些控制命令,比如对设备的扇区大小,扇区数量,擦除块大小值的获取。 > 在开始疑惑配置文件系统的 sector 最大和最小参数,实际上在这个函数中进行指定,对于flash就是写成固定4k,因为数据擦除最小是4k。 基本的功能已经实现后,MX_FATFS_Init()函数是文件系统的初始化,在此函数添加部分代码,进行测试文件系统。文件系统步骤,进行f_mount挂载,如果没有文件系统就进行格式化,再重新挂载。 文件系统操作时候建议加上互斥量,避免多个文件同时操作有影响,需要一个一个操作。 #### 4、图片传感器数据获取实现 实际上不同的传感器协议是不同的,我们只需要了解想法,图片操作顺序,拍照,读取数据(比如每次1K数据)。这里都抽象成一个就好了,拍照,获取总数据大小,读取指定地址多少数据。使用软件定时器定时拍照存储。 #### 5、ymodem实现 这里有很多开源的,我看nano没有所以才采用的开源,使用的是Free YModem implementation.使用也简单,使用xshell可支持YModem 协议 需要对接的接口函数: - __ym_getchar - __ym_putchar - __ym_sleep_ms - __ym_flush 主要使用发送函数,具体可见工程代码。 #### 6、shell与文件系统以及ymodem对接实现 shell和文件系统实现就比较简单,因为输入参数直接可以和文件系统函数对接起来,这里我实现了一个扫描函数,扫描全部文件,保留最后一个文件名,用ymodem协议可以将这个文件传出到电脑。 ### 效果     [/md]
seaguxx
2020-04-30
这家伙很懒,什么也没写!
有没有硬件图?可以弄到GIT仓库上吗
等风来
2020-05-05
这家伙很懒,什么也没写!
顶,一下
赵撵猪
2020-05-06
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=477822&ptid=424178][color=#999999]seaguxx 发表于 2020-4-30 19:30[/color][/url][/size] 有没有硬件图?可以弄到GIT仓库上吗[/quote] git 还不会弄,硬件 没什么东西,看工程文件就能看出来的,就一个外部flash+485,传感器是单独的,你选选哪家的了
撰写答案
登录
注册新账号
关注者
0
被浏览
4.2k
关于作者
赵撵猪
这家伙很懒,什么也没写!
提问
6
回答
19
被采纳
0
关注TA
发私信
相关问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
FATFS文件系统详解
2
PY32移植RT-Thread Nano记录
3
keil+env在STM32H743上实现pwm呼吸灯
4
STM32H7 实现 BootLoader 内 SDRAM 的初始化的注意事项
5
PSoC™ 62 温湿采集功耗测试
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
WIZnet_W5500
RTC
rt-smart
UART
flash
rtthread
packages_软件包
freemodbus
潘多拉开发板_Pandora
I2C
cubemx
FAL
定时器
PWM
BSP
AB32VG1
ADC
中断
消息队列_msg_queue
SDIO
msh
keil
Debug
编译报错
socket
LVGL
SFUD
C++_cpp
本月问答贡献
xiaorui
3
个答案
1
次被采纳
rcp
3
个答案
1
次被采纳
RTT_逍遥
2
个答案
1
次被采纳
WKJay
1
个答案
1
次被采纳
JonasWen
1
个答案
1
次被采纳
本月文章贡献
小权一句两句
1
篇文章
4
次点赞
喵小黑
1
篇文章
4
次点赞
jaffer
1
篇文章
2
次点赞
Agony_L
1
篇文章
1
次点赞
疯洋CrazySheep
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部