多年前在使用STM32中的硬件SPI通讯过程中,发现所给的例程实际上是有问题的。最近我的学生跟同事总跟我反映:“SPI通讯他们调试速度总是上不去,芯片支持到25MHz,我们只能做到1M左右。” 今天台式SPI的时候,我将这个问题放上来说一下。 在STM32的SPI通讯过程中,非DMA模式下,每发送一个数据后,我们的代码是这样写的:void SPI1_Send_Byte(unsigned char
STM32F407 Bootloader Ymodem 协议实现 相信很多人都希望,不开盖就可以对固件进行升级吧,就像手机那些。下文中的bootload就来实现这样的功能。 根据Ymodem协议,实现了一个STM32F407的Bootloader,该Bootloader能使用SecureCRT8中的Send Ymodem协议进行固
fat文件系统的所有外部接口都在ff.h中物理驱动器、逻辑驱动器一个物理驱动器就是一个真实的存储设备,例如一个硬盘、一个内存卡。逻辑驱动器就是一个虚拟概念,一个硬盘可以分成CDEF共4个盘,每个盘就是一个逻辑驱动器。在FAT源码中有个宏 _VOLUMES,这个宏被用于配置FAT源码支持多少个逻辑驱动器。具体要配置成多少,看业务需求。FAT源码中有个全局指针数组如上*FatFs,这个指针
1.引言本文章基于stm32官方例程实现,详细代码可下载例程。在RT-thread系统上实现1588协议,网络驱动上需要做较多的修改。 2.代码修改
2.1驱动分析
当Accumulator register,溢出之后,会增加subsecond register一个步长,这个步长为constant value;每个时钟周期 Accumulator regis
相信很多人都希望,不开盖就可以对固件进行升级吧,就像手机那些。下文中的bootload就来实现这样的功能。 前段时间有项目关于Bootload设计。所以就仔细的去了研究了一翻。以前都是用的stm32官方的,没有去深入了解。这次做完了过后,发现官方的版本存在一些问题。比如说YModem传送过程中,完全
转载
2019-02-11 16:55:00
1599阅读
2评论
0 keil5库函数配置1、建立工程文件夹,Keil中新建工程,选择型号
2、工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹。 Start文件夹中:复制 \STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下,8个启动文件之
升级方式启动方式在STM32F10xxx里有三种启动方式:BOOT0BOOT1启动模式说明0X用户闪存存储器用户闪存存储器,也就是flash启动10系统存储器系统存储器自动,用于串口下载11SRAM启动SRAM启动,用于再SRAM中调试代码系统存储器是厂家固化好的一片存储区,地址为0x1FFFF000,具有串口升级的功能,并把程序引导至用户闪存存储区。用户闪存存储区是保存用户代码及数据的存储区吗,
STM32从傻子到智障你今天有的时间是后来的你所梦寐以求的,加油哇!通讯协议,百度下,大同小异。USART,通用同步异步收发器 左边引脚部分:TX发送数据输出引脚RX:接收数据输入引脚SCLK发送时钟输出引脚上面寄存器部分:USART_DR包含一个发送用的TDR寄存器和一个接收用的RDR寄存器。 发送时,将TDR寄存器内容发送到移位寄存器,一位位发出。接收时把收到的每一位保存到接收移位寄存器,然后
源:stm32 Bootloader设计(YModem协议)相信很多人都希望,不开盖就可以对固件进行升级吧,就像手机那些。下文中的bootload就来实现这样的功能。 前段时间有项目关于Bootload设计。所以就仔细的去了研究了一翻。以前都是用的stm32官方的,没有去深入了解。这次做完了过后,发...
转载
2015-04-16 16:30:00
212阅读
2评论
串口调试前言一、什么是串口?二、使用串口给上位机发送“hello windows!”(一)串口初始化(二)代码如下(三)串口调试三、使用串口控制LED灯总结 前言 很多时候,我们在编写程序时不可避免的要调试代码,或者输出一些调试信息,但设计硬件的调试不像纯软件一样,直接在黑窗口上就可以看到想要输出的调试信息。我们通过串口将硬件与上位机连接起来,就可输出一些调试信息,用电脑USB口接收十分方便,
官方固件库中的对应函数为:void SystemInit (void)
{
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
/* Reset SW
前言在单片机方面,针对于通讯常用的协议之一modbus,这里将modbus协议和硬件之间的关系完全独立出来,硬件和协议之间的联系采用的是回调的方式进行一个关联。说明1、此协议可直接移植,并不需要关心硬件相关的。 2、modbus相关协议概念自行查找,本文只做代码的实现。代码宏定义(modbus_core_define)modbus_core_define.h此头文件定义枚举和回调以及相关的功具类#
了解了基础知识之后就可以使用某种传输方式进行 bin 文件的传输,这里介绍 YModem 协议进行下载程序
转载
2022-01-05 10:22:35
1328阅读
前言硬件:单片机:stm32f072CB,sram大小16k。(其他单片机只要sram>8k即可通用)SPIFlash:W25Q128FV,16Mbyte,单次擦除最小4k。程序使用Keil编译器,C99标准。程序已经全部完成并测试通过,目前没出现明显问题。程序使用的FatFs库版本:R0.13b。下文所有内容仅保证在此版本可行。添加文件获取FatFs库(官网)将source文件夹全部复制到
目录一. PCB画图生成BOM表网络表1. 建立PCB工程2. 右键工程,检查3. 导入原理图4. 执行变更,然后关闭5.进行元件布局二. 布线(自动布线)1. 准备工作2. 自动布线三. 覆铜四. 电气规则检查五、其它生成logoPCB图输出为Gerber光绘文件 一. PCB画图生成BOM表这是在原理图上生成 点击报告 点击左下角导出,将其保存 可以看到,生成的表格网络表点击“设计”→“工程
STM32通用部分源文件sys文件夹代码介绍delay文件夹代码介绍usart文件夹代码介绍malloc文件夹代码介绍 参考资料: 本博客的内容和程序主要参考正点原点 hal 库开发手册 以下实例使用stm32l4中的内部时钟进行工作,可直接使用STM32cube图形化配置:sys文件夹代码介绍 sys 文件夹内包含了 sys.c 和 sys.h 两个文件。在 sys.h 里面定义了 STM
1 下载协议 1.1 JTAG协议 JTAG全称 joint test action group,边界扫描系统协议;是调试芯片的通用标准协议; 1.2 SWD协议 SWD全称 serial wire debug,串行调试协议;也是调试芯片的通用标准协议;2 SWJ-DP SWJ-DP全称 serial wire/JTAG - debug port,串行和边界扫描系统调试端口;为s
IAP:在线升级代码 ,通俗的讲就是通过USART,IIC,或者SPI,USB等等,方式,在程序中升级程序,一般用在远程升级,或者是在PCB板子都安装到模具之后还需要升级代码,这样我们就需要,通过IAP的方式来升级。软件代码托管码云地址:https://gitee.com/zyzp/stm32UartIAP开发环境:MDK-V5,stm32cubeMx,SecureCRT8硬件平台:stm32f1
STM32 SPI协议简介STM32是ST公司推出的一款基于ARM Cortex-M内核的32位微控制器,具有高性能、低功耗、易扩展等特点。其中,SPI(Serial Peripheral Interface)是STM32中常用的通信协议之一。SPI协议概述SPI协议是一种同步的串行通信协议,由一个主设备和一个或多个从设备组成。主设备通过时钟信号控制数据传输,从设备在时钟信号的作用下接收或发送数据
原创
2023-06-19 18:12:17
749阅读
文章目录串口发送数据串口接受数据 串口发送数据1、串口发送数据最直接的方式就是标准调用库函数 。void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);第一个参数是发送的串口号,第二个参数是要发送的数据了。但是用过的朋友应该觉得不好用,一次只能发送单个字符,所以我们有必要根据这个函数加以扩展:void Send_data(u8 *s)