基于原子哥开发套件,STM32应用开发的学习笔记

基于原子哥开发套件,STM32应用开发的学习笔记1 学习与产品开发优选 ST 原因如下 a 具备高性价比的 ST 系列单片机 b 开源多 资料很多 许多问题在网上都能找到相关答案 2 时钟 RCC 寄存器 a 系统时钟与 RTC 独立看门狗是分开的 时钟源 HSI HSE LSI LSE PLL b

大家好,我是讯享网,很高兴认识大家。

1、学习与产品开发优选ST,原因如下

    a、具备高性价比的ST系列单片机;

    b、开源多,资料很多;许多问题在网上都能找到相关答案;

 

2、时钟(RCC寄存器)

    a、系统时钟与RTC/独立看门狗是分开的;时钟源:HSI  HSE  LSI  LSE  PLL 

    b、初始化时注意时钟来源于频率大小;

    c、PLL锁相环;CSS(监控器);MCO(输出时钟IO口);

    d、AHB:总线时钟;  APB1(低速时钟)、APB2(高速时钟):外设时钟;

    e、配置时钟的一般流程:选择时钟源->选择分频/倍频->外设的分频(确定外设与系统时钟关系);

    f、时钟配置的入口(启动文件):Reset_Handler;

 

3、485接口原理(SP485 MX485):电平转换

    a、串口标准:TTL/CMOS(MCU串口)   RS232C( EIA(±(5~15) ) DB9 10m)   RS485(1200m)  RS422  区别在于电压,阻抗;

    b、逻辑1:+(2~6)   逻辑0:-(2~6);fuzhi

    c、电路需要接120欧姆匹配电阻;

    d、多对多关系:发送器、接收器:

 

4、CAN总线(协议层通讯结构,协议较为复杂,需要电平转换:TJA1050)

    a、类似于485接口;

    b、仲裁机制,错误排除机制;

    c、采用协议(帧)的通讯方式;

    d、二线制(实质与串口、SPI、IIC等都是类似的,只是在协议上的不同);

    e、工作模式:

        1)初始化模式,正常模式,睡眠模式;

    f、测试模式:

        1)回环测试:自发自收,但不接受CAN总线的数据;

        2)静默模式:只收不发;

        3)回环静默模式:自发自收(不接受也不发送数据到CAN总线);

 

5、触摸TAP

    a、利用电容充放电原理,比较充电时间(有手接触的时候会长一点);

    b、GPIO负责开关电路,形成充放电;利用定时器输入捕获功能检测;

 

6、触摸屏(LCD与触摸)

    a、LCD(注意数据传输格式),与OLED控制方式相似的;

        1)STM32利用FSCM接口来操作TFTLCD,2440利用专用硬件资源操作(支持STN  TFT两种);

        2)同样都是需要配置硬件寄存器达到控制LCD;

        3)流程步骤相对简单,但是原理名词较多 : GRAM、显存像素分辨率(bit per pixel)、RGB格式(565  666);

        4)字库的来源:ASCII、中文字库、图片(需要大内存装载);

        5)通过叠加形式,产生许多组合效果;

    b、触摸:

        1)STM32采用专用IC(电容),利用IIC/SPI方式,2440利用专用硬件资源操作(ADC/触摸接口);

        2)专用IC:电容屏才支持多触点(多个坐标读取);

        3)2440操作专用寄存器,检测触摸按下松开有中断;

    c、触摸与LCD的配合,需要依靠坐标转换实现;

 

7、摄像头(OV7670:DSP内核)

    a、SCCB(类IIC)/IIC总线控制: Seril Camera Control Bus; SCCB 时序和 IIC 时序十分相似

    b、控制项:图像质量、图像格式(尺寸)、数据格式、传输方式;

    c、VGA:Video Graphics Array; CIF:

    d、像素: 640*480=30W;

    e、FIFO芯片:AL422B (384K字节,可以储存2帧QVGA图像数据)

    f、读取数据策略:采用读取缓冲区数据方式(实现拍照功能);PS:直接读取太耗费CPU资源;

    g、读取FIFO数据->将数据写入LCD缓冲区(循环76800次)->完成后复位FIFO,缓存下一帧照片;

    h、 GPIO BSRR 和 BRR 两个寄存器,实现快速IO配置;

    i、高速线:PCB布线一定要短;线材连线采用排线,尽量不用单根杜邦线;

 

8、外部SDRAM(IS62WV51216)

    *具体的时序操作都有FSMC自动实现,软件上需要干预;

    a、数据手册重点看时序图;

    b、利用FSMC硬件资源连接SDRAM,进行访问;

    c、静态,不需要刷新和时钟电路;支持高/低字节控制;

    d、地址线:2^19=512K;

    e、地址线是可以随意接的,不必按照顺序接;

    f、重要的函数:一、init   二、read_buffer   三、write_buffer;

    g、在传输16位字节数据的时候注意:输入的地址如果为奇数,则写入的速度将要减半;

 

9、内存管理(动态分配)

    a、malloc  free;

    b、__align(4) u8 membase[MEM_MAX_SIZE];

    c、__attribute__((at(0x)))

    d、类似用户储存管理机制;

 

10、SD卡

    *SD/NAND FLASH/NOR FLASH对比:https://www.veryarm.com/1200.html

    a、SD卡通讯简单,是单片机拓展外部内存的首选;

    b、SDIO控制器:STM32自带标准SDIO接口资源,可以直接驱动

    c、分类:MMC卡、SD储存卡、SD I/O卡和CE-ATA设备;4位、8位;

    d、数据传输方式:数据块、数据流; 数据总线模式:1位、4位、8位;

    e、SDIO的数据FIFO寄存器: 一共64个字节,读写只能读写32字节,并且必须4字节对齐进行内存操作;

    f、SDIO的重要操作函数(3板斧): init、SDIO_ReadData、SDIO_WriteData;

    g、低容量(SDSC):单字节寻址    大容量(SDHC):512字节寻址;

 

11、FATFS:一种文件管理软件资源 

    *API手册:http://elm-chan.org/fsw/ff/00index_e.html

    *挂载(实质就是连接到相应的储存介质,文件系统将得到地址与名字标识符):https://zhidao.baidu.com/question/581631357.html

    *常用的文件xito:FAT/FATFS(小型嵌入式应用)  NTFS  CDFS(光盘)  exFAT     Linux:jffs  yaffs

    *文件,实质就是文件系统帮你规定,整理好的内存空间(文件名+内容+属性信息等等的组织);

    *可移植的小系统或者应用:1)配置顶层文件  2)实现硬件控制代码  3)本身实质的就是纯软件;

    a、卷 扇区  盘符/卷标  ;支持的储存设备:磁盘、SD卡、FLASH、U盘

    b、移植的三个步骤:a.数据类型定义  b.配置FATFS   c.实现6个接口函数:

    c、disk_initialize    disk_status  disk_read  disk_write  disk_ioctl   get_fattime

    d、使用FATFS前需要用f_mount挂接分区;

    e、查看函数参数的输入值:a.例子  b.查看官方说明文档;

    f、宏定义的或运算条件!!!!

    g、f_readdir( );输入同一个目录,会自动偏移下一位;

 

12、汉字显示

    * 汉字内码(GBK/GB2312) 、查找点阵库、解析、显示;

    *实质就是查找特定数据的地址,然后显示;

    *由于电脑的字体大小与单片机字体大小不是一一对应的,需要转换,因此需要生成字库;

    a、编码:GB2312  GBK  BIG5 ; 根据编码去查找字库,找到相应的码子矩阵数据,传输到LCD进行显示;

    b、开发工作:字库的制作;

    c、设计思路:将字库文件放在SD上,程序将字库文件转移到W25Q16,调用LCD显示接口进行显示;

 


讯享网

13、图片显示(软件实现)

    *图像的储存和取出:需要经过编码和解码,这样可以大大节省内存!!

    *图片的压缩一般都是有损压缩;

    *piclib.c 文件下提供各解码算法用的公用函数,并提供了一个显示函数的入口;

    *开发工作:a、实现LCD显示接口  b、图片文件读取;

    a、图片:BMP  JPEG/JPG  GIF; 利用对应的解码库进行解码->数据传输到LCD显示;

    b、BMP格式的图片记录顺序:从左到右,从下到上;  biBitCount1:黑白   biBitCount16:64K色;

    c、piclib做了两件事:一、调用底层编码解码函数  二、指向LCD底层函数;

    d、读取图片策略:读取一个文件夹下的所有图片,保存索引(文件名),实现下一张,上一张;

 

14、拍照功能

    a、读取LCD显示的图像信息,并调用BMP编码函数,创建BMP格式文件,并储存在储存介质中去;

    b、数据的处理;

 

15、手写识别(识别原理需要大量时间去精通)

    *识别算法需要高速的MCU处理器以及大内存方可;

    a、识别过程:训练学习过程、识别过程;

    b、LDA线性判别分析;  降维:512维降至64维

    c、八方向特征提取操作;

    d、初始化识别程序->获取输入的点阵数据(如何获取?)->调用alientek_ncr函数,得到识别结果->终止识别->识别完成;

    e、重要的算法是由库的形式给出;

    f、所需资源: FLASH:52K   RAM:6K;

 

16、图片、音频、视频都是按照一定格式储存的,因此都会涉及到编码、解码

    *音乐播放器:VS1053(DSP内核高处理速度芯片)  

    *针对不同文件格式有不同的开源编解码

    a、音频解码芯片:MPS/OGG/WMA/FLAC(需要加载patch)/WAV/AAC/MIDI;

    b、输出输入端:

        1)输入端:可变采样率的立体声ADC(支持咪头或线路输入) ;

        2)输出端:一个高性能立体声音DAC及音频耳机放大器;

    c、涉及文件处理;

    d、与mplayer的区别:

        1)文件处理方式:FATFS文件系统,读取文件信息;

        2)LCD图片处理方式;

        3)数量级处理;

    e、细看源码处理;

    f、数据的处理过程:定义一个缓冲区4096字节,从SD卡或其他储存媒介读取出来并通过SPI接口发到VS1053中去;

 

17、录音机处理:VS1053  

    *码率、声道;

    a、WAV文件格式说明:块的标志符(4个ASCII)、数据大小(4BYTES)、数据

    b、低字节在前,高字节在后;

    c、音频格式数据的处理要详细参考;

    d、数据的处理过程:定义一个缓冲区512字节,满了之后储存到SD或其他储存媒介中;

 

18、T9拼音输入法

    a、实现的算法:联想出一系列同中字组合的次,各种组合;

    b、实现步骤:输入字符串->查找拼音索引表->显示匹配清单里面的所有字->用户选择匹配项;

    c、搜狗输入法:a、联想功能,热词搜索;    b.存在词库;

    d、匹配算法,好好思考;  UI显示->触摸位置获取->获取按键值->进行匹配算法;

    e、搜索算法详细参考;

 

19、IAP在程序中编程  (类似Linux的U-boot)

    *程序下载的三个方式:a、JTAG/SWD   b、ISP(选择启动方式)   c、IAP(实现远程烧写)

    *实现IAP程序升级,需要设计两个项目代码,第一个程序代码( Bootloader )通过USB USART等接收程序或者数据,执行对第二部分代码的更新,而第二个项目代码(APP)是真正的应用程序代码;

    *IAP程序必须满足两个要求:

    a、新程序必须在IAP程序之后的某个偏移量为x(必须为0x200的倍数)的地址开始;

    b、必须将新程序的中断向量表相应地移动,移动的偏移量为x;

        1)HEX文件包括了地址+数据信息,bin文件只包含数据信息;https://blog.csdn.net/sinat_/article/details/

 

20、USB虚拟串口

    USB学习:《圈圈教你玩USB》

    *协议十分复杂,即软件要遵循USB规范;

    *端点?  端点1用于虚拟串口发送  端点3用于虚拟串口接受   详细说明: https://www.sohu.com/a/_

    a、USB :Universal serial bus,

    b、主机:D-/+接1.5K电阻到地,USB设备(从机):低速设备D-接1.5K到电源   反之 D+

    c、使用专用的数据缓冲区传输数据(512字节);不能CAN 同时使用;

    d、开发工作:移植修改USB驱动程序;

    e、模拟串口需要安装虚拟驱动;

 

 

21、重要架构图

1、时钟架构:

 

 

2、STM32的内存分布:

 

 

3、STM32 第二目标代码,即APP代码段运行图:

 

 

4、CAN总线结构:

 

5、OV7670功能框图:

 

6、OV7670时序图:

 

 

 

7、手写识别:

 

 

 

 

 

 

小讯
上一篇 2025-02-08 20:45
下一篇 2025-03-28 18:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/38650.html