产品概述

单片机tf卡 用FlexLua低代码单片机快速实现TF卡的读写增删功能

小编 2024-11-28 产品概述 23 0

用FlexLua低代码单片机快速实现TF卡的读写增删功能

TF 卡读/写/删除

基于 FlexLua 低代码单片机技术,脱离复杂单片机C语言开发正逐渐成为一种快速高效的 IoT 硬件开发方式。即使新手不懂单片机开发也可很快很容易用FlexLua零门槛开发各种 IoT 硬件,更多教程请参考 FlexLua 官网。

注意:仅 ShineBlink C1 开发板 带 SDIO TF 卡接口,C2不适合本教程(C2 仅能通过内部 Flash 模拟出一个 1.6M 的极小 U 盘)。

一、实现功能

将开发板插上一张 8GB 的 TF 卡后,通过 USB 线将开发板和电脑连接起来:

功能1,写操作:每隔0.2秒向TF卡上的test.txt文件中写入10个数据(0-9)功能2,读操作:上面的写操作循环执行20次(4秒)过后,再读取test.txt中的内容并通过print打印出来。功能3,删除操作:上面读操作完毕后,删除test.txt文件,最后主程序结束。

二、材料清单

TF 卡,容量(32GB 以内),最好是class 6 以上的 TF 卡

三、完整代码

docnt = 0data = {0,1,2,3,4,5,6,7,8,9} --写操作: 连续20次每隔200毫秒,每次向test.txt写10个数据 --如果test.txt不存在,会自动创建。如果存在就接着原来文件的最后面开始写入for i = 1, 20 doLIB_DelayMs(200)cnt = cnt + 1LIB_Fwrite("test.txt", data)end --读操作:从刚才的test.txt文件的起始地址0处开始读取最多256字节的内容,如果不足256返回实际数目--read_number:整数型 表示读取的数目,read_content:table类型 存放读出的内容read_number, read_tab = LIB_Fread("test.txt",0)if read_number > 0 then--concat是Lua table类的自带函数,用来合并所有元素print(table.concat(read_tab))end --删除操作:最后删除test.txt文件LIB_Fdelete("test.txt") --停止Lua线程while(true) doendend

如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

四、代码运行结果

最后我们在 TF 卡的 LOG.TXT 日志文件里可以看到我们刚才 print 输出 read test.txt 里的内容,和第一步写入的 200 个数据内容完全一样。

基于COS操作系统的TF卡存储系统

摘 要 : 针对Cortex-M3内核的STM32处理器平台,成功移植μC/OS操作系统,并引入FatFs开源软件,构建了FAT32通用文件系统。以温度采集与记录系统为实例,通过对μC/OS操作系统、FAT文件系统、TF卡等相关技术的分析,实现了面向TF卡存储媒介的大容量存储系统,将实时温度按时间关系存储至TF卡。

0 引言

随着嵌入式微处理器功能的不断增强,嵌入式系统广泛应用于音频、视频、故障记录、数据记录等大批量数据存储的场合,传统的由单片机构成的系统简单的对存储媒介按地址、按字节的读/写已然不能满足人们的实际需求。基于RTOS的存储系统在宕机、断电等异常发生时,可以保证数据的完整性以及能够快速地恢复正常工作。为了与现行PC平台共享数据,嵌入式系统迫切需要采用通用文件系统来实现大批量数据的管理[1]。因此,本文以基于μC/OS操作系统的TF卡存储系统的设计为研究对象,具有很好的实际意义。

本文基于μC/OS操作系统平台,设计并实现了以PT100铂电阻为温度传感器、以STM32F107VCT6微处理器为核心的硬件平台,实现环境温度采集和实时时钟功能,并在PC上显示实时温度以及将温度数据按时间关系存储至TF卡文件中。系统实现框图如图1所示。

1 温度传感器

本文采用温度传感器PT100测温。PT100是铂热电阻,当PT100在0℃时阻值为100 ?赘,它的阻值会随着温度的增加呈规律性的变化。在-50℃~+600℃范围内,PT100具有其他任何温度传感器无法比拟的优势。PT100驱动电路如图2所示。

在0≤t<65℃时,PT100铂热电阻阻值与输出电压V的关系为V=k×R+b。在第一次使用PT100时,需要校准PT100。校准过程如下:

(1)在PT100插件处插上100 Ω电阻,获取AD值记为Vm。

(2)在PT100插件处插上125 Ω电阻,获取AD值记为Vn。

(3)根据数据(100,Vm)和(125,Vn)求取k、b系数。

(4)软件实现将k、b系数值存储至EEPROM中。

在使用PT100测试温度时,根据转换的AD电压值与k、b系数获取PT100阻值R。然后利用式(1)求取温度值:

T=sqrt(4×Pt_B×(R/Pt_R0)+Pt_A×Pt_A-4×Pt_B)-Pt_A)/(2×Pt_B)(1)

其中,Pt_A=0.003 908 3,Pt_B=-0.000 000 577 5,Pt_R0=100,单位为℃。

2 μC/OS-II操作系统

μC/OS-II是以任务为核心的实时操作系统,μC/OS-II V2.52可以管理64个任务,任务管理包括:创建任务、挂起任务、删除任务、唤醒任务、改变任务优先级和获取任务状态。每个任务都有唯一的优先级,优先级号越低,任务的优先级越高,任务越重要。在任一给定的时刻,任务的状态已知,且为以下5种状态中的一种,各任务状态切换如图3所示。

(1)睡眠状态:任务驻留在程序空间中,还没有交给μC/OS操作系统内核管理。

(2)就绪状态:任务一旦建立,就处于就绪状态,准备运行。若新建的任务优先级比正运行的任务优先级高,则内核提供任务切换服务,新任务运行。

(3)运行状态:已经建立的、就绪状态中优先级别最高的任务进入运行状态。任何时刻只能有一个任务处于运行状态。

(4)等待状态:正在运行的任务通过调用OSTimeDly和OSTimeDlyHMSM函数实现延时,等待延迟时间到;运行中的任务可能需要等待某一事件的发生,从而进入等待状态。

(5)中断服务状态:运行中的任务被中断,从而进入中断服务状态[2]。

有时,任务或中断与任务之间需要传递信息,这种信息传递称为任务间的通信。μC/OS-II支持3种通信方式:信号量、消息邮箱、消息队列,它们统称为事件。每个事件由独立的事件控制块ECB控制,ECB定义了事件类型,包含了当前正在等待事件发生的任务号等信息。μC/OS-II还具有时间管理与内存管理等功能。

3 TF卡与FatFs文件系统

当嵌入式产品需要扩展系统容量用来存储数据时,目前常用的有U盘、Flash芯片、TF卡等,其中最适合单片机系统的莫过于TF卡了,它不仅支持最大容量32 GB,还支持SPI接口,且能在TF卡上实现文件系统[3]。

FatFs Module是一种完全免费开源的FAT文件系统模块,专门为小型嵌入式系统设计。FatFs的编写遵循ANSIC,并且完全与磁盘I/O层分开,经简单的修改便可移植到多种嵌入式处理器上[4]。FatFs系统框图如图4所示。

FatFs具有清晰的层次结构,应用层提供规范的API接口函数,用户可直接调用这些函数实现读文件(f_read)、写文件(f_write)、打开文件(f_open)和一些文件夹操作等,所以即使不理解FatFs Module的内部结构以及复杂的FatFs协议,用户也可以通过这些API完成对文件的所有操作。

FatFs Module层为中间层,为FatFs核心内容,主要实现了FAT协议。在移植过程中,不需要修改此部分内容。

底层是应用层与磁盘介质的接口,在移植过程中需要修改此部分,包括存储媒介读写接口I/O驱动以及文件操作的时间RTC等。最少只需要编写3个底层驱动函数:

(1)文件系统初始化函数

DSTATUS disk_initialize(BYTE drv)

(2)文件系统读驱动

DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE count)

(3)文件系统写驱动

DRESULT disk_write(BYTE drv,const BYTE*buff,DWORD sector,BYTE count)

用户根据具体的硬件平台填充相关函数,即可完成移植。

4 调试与结果

将SD卡中2014-10-28日15:0:0~15:10:0的数据绘制成折线图,如图5所示。

5 结论

本文基于μC/OS-II操作系统平台设计并实现了以PT100铂电阻为温度传感器、以STM32F107VCT6微处理器为核心的硬件平台,实现了环境温度采集和实时时钟功能,并在PC上显示实时温度以及将温度数据按时间关系存储至TF卡文件中[5]。

由于该系统缺少与用户交互界面,因此系统缺乏一定的灵活性。今后的工作就是实现PC与MCU的双向通信,选择在STM32平台上移植GUI,提供给用户更多的选择。当然,通过交互界面,用户可以一目了然地了解某一时段的环境温度变化情况等。完善系统功能和提高采集数据精度仍是今后的主要工作。

参考文献

[1] 李世奇,董浩斌,李荣生.基于FatFs文件系统的SD卡存储器设计[J].测控技术,2011,30(12):79-81.

[2] 于鹏飞.嵌入式存储设备上文件系统的设计与实现[D].大连:大连交通大学,2007.

[3] LABROSSE J J.嵌入式实时操作系统?滋C/OS-II[M].邵贝贝,译.北京:北京航空航天大学出版社,2003.

[4] 张云,惠晓威,肖迎杰.基于ARM的嵌入式文件系统研究与设计[J].计算机系统应用,2010,19(3):299-231.

[5] 杨建光.基于μC/OS-II的温度控制系统的研制[D].天津:中国民航大学,2007.

相关问答

如何向 单片机 中写入程序?

向单片机中写入程序一般采用以下步骤:1.编写程序。使用C语言或汇编语言编写程序,编写完成后编译生成目标文件。2.准备编程器。根据单片机的型号和封装,选...

单片机tf 1啥意思?

1.单片机TF1指的是常用的单片机定时器中的一个Timer/Counter1。2.Timer/Counter1是一种用于测量和产生精确时间间隔的电路。其能够通过模式控制对计数器进行...

单片机 的psw是什么?

另一类是存放控制信息,如允许中断(IF位),跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(FlagRegister)。51单片机的PSW是一个8位寄存器,用来存放...

80c51 单片机 的片内,片外存储器如何挑选-ZOL问答

80c51单片机的片内、片外存储器的选择:80C51单片机的EA’引脚为访问内部和外部...TF卡等。如果没有后缀的话,AT89C51只要4K如果有后缀的话,比如AT89C51RB2,那...

51 单片机 中定时器计数器使用方法?

定时器使用方法:设置工作模式(设置特殊功能寄存器TMOD)设置计数寄存器处置设置TCON,通过TR0置1使计时器开始计数判断TCON寄存器TF0位,检测定时器溢出情...

单片机 定时器和计时器怎么交替使用?

单片机定时器和计时器交替使用方法:设置工作模式(设置特殊功能寄存器TMOD)设置计数寄存器处置设置TCON,通过TR0置1使计时器开始计数判断TCON寄存器TF0位...

单片机 12m如何产生40k频率

当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。...采用AT89C51或AT89S51单片...

c语言的程序怎么烧进stm32里?

通过以上三种方式即可实现将C语言程序烧写进STM32里,从而让单片机执行程序代码。以上就是这个问题的回答,感谢留言、评论、转发。更多精彩内容请关注本头条...

am401是什么plc?

1am401是一种PLC控制器2am401是一种基于ARMCortex-M3内核的单片机控制器,适用于电力、机械、自动化等领域的控制系统。它具有高速、高性能、高可靠性、多功...

什么样的比较器可以直接和PIC 单片机 直接联接?-ZOL问答

复位时单片机IO是高阻态,也就是处于输入状态,此时软件设置的端口状态是无效的,如果想让它复位状态时那个IO口有个确定的电平,可接一个10K的上拉或下拉电阻有用...

猜你喜欢