- 博客(41)
- 资源 (6)
- 收藏
- 关注
原创 奉加微PHY6212内存不足的解决办法
1.前言在开发PHY6212的蓝牙时,遇到内存不足的问题,keil报错如下****.axf: Error: L6220E: Execution region ER_IROM1 size (50640 bytes) exceeds limit (49152 bytes). Region contains 88 bytes of padding and 1656 bytes of veneers (total 1744 bytes of linker generated content).2.芯片的
2021-11-14 23:25:42 1826
原创 泰凌微FLASH操作与蓝牙的冲突解决
1.前言在泰凌微的使用中,会出现一个问题,对片上flash的擦除会导致蓝牙的断连。2.原因2.1 关闭蓝牙的中断为了保证flash MSPI时序操作的的完整性,会关闭掉中断,而蓝牙通讯是通过中断来收发数据2.2 flash擦除时间过长使用flash_erase_sector(u32 addr)去擦除一个扇区,在官方文档说明中:16M系统时钟,大约需要30~100ms甚至更长时间。在48M系统,测试出来的时间大约是50~70ms。3.解决办法SDK提供了一套机制,通过bls_ll_reque
2021-11-14 18:09:54 1264
原创 泰凌微8258 SPI使用遇到的坑
1.低功耗问题使用结束后,必须将spi反初始化,设置为输入悬空,不然会有大概500uA的漏电。2.SPI读取的问题在实际使用中,SPI总线可能不止挂载一个SPI器件,所以要控制不同的SPI的CS引脚,这就需要对SDK的源码进行修改,以下是SDK的源码;/** * @brief This function serves to read a bulk of data from the SPI slave * device specified by the CS pi
2021-11-14 16:33:15 1153
原创 蓝牙GAP&广播
蓝牙GAP&广播1.GAP1.1 GAP角色1.2 GAP服务特征2.广播3.设备地址1.GAP1.1 GAP角色BLE为设备在物理传输定义了4种GAP角色,一个设备可以支持多个GAP角色,如既是广播者,也可以同时是外围设备。(1).广播者:广播发送者,不是可连接的设备;(2).观察者:扫描广播,不能够启动连接;(3).外围设备:广播发送者,是可连接的设备,连接后成为从设备;(4).中心设备:扫描广播启动连接,连接后成为主设备;1.2 GAP服务特征(1).设备名称(2).外观特
2021-04-08 22:56:44 704
原创 蓝牙GATT&ATT
AAT&GATT1. GATT的基本单位1.1 Attribute Type:UUID1.2 Attribute Handle1.3 Attribute Value21. GATT的基本单位GATT Server![在这里插入图片描述](https://img-blog.csdnimg.cn/20210403172344439.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9
2021-04-03 22:49:35 811
原创 分析如何编写一个timer程序(以blt_soft_timer为例)
一.timer的定义timer的功能就是定时,在某一时刻启动一个 timer并设定超时时间,超时时间一到,timer就会回调timeout handler,然后执行你需要的工作。二.timer的时钟来源时钟来源有两种来源a.硬件定时器:优点是时间精确,缺点是功耗高。b.系统滴答时钟:一般为1ms进一次中断,所以定时时间必须大于1ms,优点是功耗低。nrf的app timer使用的RTC1也是来自系统的滴答时钟,timer采用的系统的滴答时钟。三.整体的设计思路3.1. 初始化系统时钟配置系统
2021-01-31 00:53:35 624
原创 NRF5X系列 引脚复用
1.把IO初始化为SPI/IIC/UART等外设时,在程序中要改变引脚的功能时,需要使用SDK提供的unint函数进行去初始化,否则配置是失败的。2.NFC引脚的复用在芯片默认状态下,以52832为例,p09和p10是NFC引脚,需要在keil的C/C++的Define里面添加CONFIG_NFCT_PINS_AS_GPIOS即可。3.Reset引脚的复用此引脚一般接外部看门狗或按键用于芯片的复位;如引脚不够需要复用,则要按照2所说在keil的C/C++的Define里面去掉CONFIG_GPI
2021-01-20 19:24:39 646
原创 矩阵按键的鬼键问题
文章目录前言一、“鬼键”是什么?二、矩阵按键的原理1.硬件电路2.软件处理总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言在做3x3按键矩阵时,本来是做单按键识别的,后来改需求需要能同时按下多个按键,经测试当同
2020-12-19 23:22:19 7292 4
原创 算法学习之KMP
1.算法的应用存在两个不等长的字符串,判断短的字符串是否长的字符串的字串,如果是返回子串的首个字符的下标;如果否,则返回0.注:长字符串的第一元素为字符的长度。2.算法的关键:求next数组代码实现void getNext(string T,int *next){ int j=0,i=1; next[1] = 0; while(i<T[0]) //T[0]存放长字符串的长度 { if(0 == j || (T[i] ==T[j])){ i++; j++; if
2020-11-08 18:37:59 94
原创 IIC总线电阻/电容的计算
1.芯片IIC的接口配置一般为开漏,引脚需要外接上拉电阻才能保证正常通信。2.IIC电平的定义IIC规范将低于VIL或低于0.3VDD的电压定义为逻辑低电平,同样将高于VIH或高于0.7VDD的电压定义为逻辑高电平。3.最小电阻的确定电源电压限制了可允许总线拉低的最小上拉电阻值,过强的上拉会阻止器件充分拉低拉线的电平,导致无法确保逻辑低电平能被检测到。在输出级V_OLmax=0.4V 时指定I_OL为3mA,允许总线电压拉低的最小上拉电阻公式:Rmin>=(VDD(min)-Vol)/3m
2020-09-12 18:33:57 5282
原创 Jlink烧写SPI Flash存储芯片
SPI FLASH裸片就直接烧写,在PCBA上需把SPI FLASH与单片机的接口设置为输入浮空。1.硬件连接和软件使用说明:https://zhuanlan.zhihu.com/p/547291902.J-Flash SPI的配置,具体参数根据使用的FLASH的数据手册配置:https://blog.csdn.net/qq446252221/article/details/999428353.如果点击Target->Auto下载程序到Flash芯片失败,就点击Target->Prog
2020-08-06 08:52:19 839
原创 52832 寄存器配置SAADC中断读取数据
52832 SAADC简介1.ADC类型是逐次迫进型;2.分辨率分别是8/10/12 bit,使用过采样可以达到14 bit(不能使用于多通道扫描);3.自带两路EasyDMA可用于数据存储;4.基准电压配置只能使用内部的基准电压(0.6 V),还要配置电压增益分别为gain,ADC通道输入电压范围0.6/gain;5.使用方式(1)单次使用(2)连续转换(3)过采模式过采样并不能改善积分非线性(INL)或差分非线性(DNL)。•使用本地计时器或通用计时器和PPI配置固定采样率以.
2020-07-07 23:22:26 995
原创 指针的偏移和数组与指针的结合使用
一.指针的定义类型名 *指针变量名;类型决定指针的大小,可用sizeof运算符去计算大小。二.指针的赋值1.使用地址进行赋值,数据类型与指针类型需一致int iNum = 0x64;int *ptr;ptr = &iNum ;2.利用指针之间相互赋值,指针类型必须一致int *ptr1,*ptr2;*ptr1 = *ptr2;三.指针的本质指针的本质就是指向某个内存地址的标记,指针交换其实就是交换相互指向的内存地址。四.指针的偏移1.指针的单个偏移int array
2020-05-24 23:42:59 1199
原创 单片机延时的几种方式
分为使用操作系统和不使用操作系统一、不使用操作系统1.执行指令耗时间,不能实现可打断,浪费MCU资源,如下面的延时函数 delay_msvoid delay_ms(u16 nms){ while(repeat) { repeat--;//重复执行自减指令 }} 2.使用定时器进行计时,可以实现延时过程可打断,不浪费MCU资源定时器初始化,根据时钟去设置一次定时的时...
2020-03-04 19:17:08 3727
原创 FAT文件系统移植-基于STM32F103
一.介绍FAT文件系统分为三层,如下图所示。1.底层接口,包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟,需要我们根据平台和存储介质编写移植代码。2.中间层FATFS模块,实现了FAT 文件读/写协议。FATFS模块提供的是ff.c和ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。3.最顶层是应用层,使用者无需理会FATFS的内部结构和...
2020-03-03 20:05:48 1007
原创 电源模块中CNT、TRM和SENSE引脚
今天在使用某DC-DC电源模块时,发现一个CNT引脚,而数据手册并没有说明和相关的应用电路,厂家有点高估普通使用者的能力。如上图所示,3号为CNT,经过实际测试,CNT引脚不接也可以正常输出。引脚名功能控制功能端(CNT)通过对CNT端高低电平的控制,实现模块输出有效的使能。分为正逻辑和负逻辑,分别对应高、低电平使模块输出有效;输出调整功能(TRIM)模块通常允...
2019-11-19 23:02:06 11940
原创 shell时间操作
1.Linux的时间分为两种:一是公元时间(跟日历一样);二是纪元时间(从1970年1月1日0时0分0秒至当前时刻的总秒数);2.日期格式字符串表日期内容格式星期%a(例如:Sat);%A(例如:Saturday)月%b(例如:Nov);%B(例如:November)日%d(例如:31)固定格式日期(mm/dd/yy)%D(例如:10/18/1...
2019-09-17 23:56:40 1123
原创 如何建立可运行的shell脚本
1.首先有一个可以运行的Linux环境,最简单使用VM虚拟机加Linux系统,此次使用Ubuntu12系统;2.进入系统后,使用Ctrl+shift+t进入命令行,使用mkdir命令创建一个文件夹;mkdir shell_script建立一个shell_script的文件夹,使用ls命令查看,可以看到shell_script的文件的存在;使用cd命令进入shell_script文件夹;...
2019-09-17 22:31:44 433
原创 项目实战之物联网智能鱼缸
1.背景随着我国经济的发展和人民生活水平的大幅度提高,在家饲养鱼类已成为一种趋势。但是,人们在工作时经常需要出差,鱼不能像猫和狗一样可以寄养。物联网智能鱼缸应运而生,解决出差时养鱼的烦恼。2.主要功能和指标(1)智能照明查询资料可知,普通日光灯的光照强度是100 lx左右,再经过不断测试,最终将光照强度阈值设置为111 lx,开启自动补光之后,当系统检测到光照强度值低于111 lx时就会...
2019-09-01 17:32:34 7895 6
原创 XRA1403扩展IO编程
XRA1403是一款带有SPI接口的16位GPIO扩展器。上电后,XRA1403在每个I / O引脚上都有内部100K欧姆上拉电阻,可以单独使能。官网数据下载https://www.alldatasheet.com/datasheetpdf/pdf/839979/EXAR/XRA1403.html1.封装图2.引脚功能图3.硬件设计注意点IRQ#引脚是开漏,必须接上拉电阻,不然一直为...
2019-09-01 11:23:51 625 4
原创 市电掉电检测
掉电检测和保护电路就是对系统电压进行监测,当系统电压值下降到低压警戒值时,电路会发现并做出反应,发出一个警告信号,处理器接收到警告信号之后马上进行数据保存等操作,防止系统数据丢失。1.思路市电是220V的交流电,不能大容量的电解电容(400v)和法拉电容(5v)充电,首先用全桥电路把交流电转换成直流电;用二极管隔断检测电路的输入端和输出端,能够立刻检测到掉电;使用单片机的IO引脚来检测掉电信号...
2019-08-04 20:48:27 5885 1
原创 防雷击和浪涌设计和放电管、压敏电阻、TVS管对比
在雷电放电的过程中,由于瞬间放电产生了强烈的电磁脉冲,在临近的设备或电子线路上感应了幅值和变化速率都很高的浪涌电压电流,对某些电子设备产生毁灭性的的破坏,而过压/浪涌防护器件就是为各类电子设备提供防护的,避免设备内部的电子元器件遭受雷击浪涌的损坏。压敏电阻、气体放电管、TVS管(瞬间抑制二极管)三种器件都限压型的浪涌保护器件,都被用来在电路中用作浪涌保护。1.放电管、压敏电阻、TVS管特性对比...
2019-08-04 18:13:51 4915
原创 功耗计算和电池使用年限计算
1.测试准备工作:测试PCBA一块;万用表(电流表)一台;示波器一台;用于测试电池一枚;采样功率电阻一枚。2.测试条件:根据指定的环境参数和产品的功能制定测试条件3.测试方法:(以一个周期无线发射数据的模块为例)(1) 静态工作电流测试:样品电路串联电流表,可以测试到休眠电流I2;(2) 无线发射工作状态电流测试:样品电路串联采样电阻,使用示波器捕捉采样电阻无线发射工作状态的电...
2019-08-04 16:14:23 6709
原创 uC/OS-II与uC/OS-III的区别
实时操作系统分为硬实时和软实时两类,两者的区别在于对于处理线程超时以及超时带来的后果的容忍度。1、定位uC/OS-II定位于8/16位以及底端32位的CPUuC/OS-III定位高端32以及高端16位的CPU2、任务调度算法uC/OS-II:优先级软件查表算法uC/OS-III:有CLZ指令,有优先级硬件算法指令的CPU2、uC/OS-III新增功能(1)同时支持优先级与时间片调度...
2019-07-19 23:41:07 2135
原创 PCB布局和布线
PCB设计原则: 7分布局,3分走线!布局1、以电源为例,布局按照电流的走向,由高压向低压布局,走线尽量要短 。火线和零线之间间距尽量大,如果比较近而有一定距离,可以做挖孔处理。经过光耦的低压电路可以双面敷铜,增加抗干扰性。高压电路和低压电路之间挖孔处理,防止爬电。2、所有器件,尽量远离板边,防止静电放电。3、晶振部分电路靠近芯片。布线注意天线部分的线宽和其与GND之间的清除间隔,特...
2019-06-03 14:28:08 2331
原创 手把手教你AD绘图
一、创建工程文件打开软件,选择文件>NEW>Project,注意更改红色框中的信息,点击OK。直接工程右键,新建原理图、PCB、原理图库、PCB封装库新建之后,右键点击保存就可以更改名字(一般是默认的)二、原理图的绘制快捷键的使用库的查找,右下角的system选择库这里会出现我们自己画的库和软件自带的库找到元器件,鼠标选中后,往原理图上放就行,在拉的过程中,按...
2019-06-03 11:39:08 28324
原创 UC/OS II的信号量管理
μC/OS-II支持对信号量的3种操作:创建信号量OSSemCreate()、发送信号量OSSemPost()、等待信号量OSSemPend()。1.事件控制块(ECB)①µC/OS-II将信号量、互斥信号量、消息邮箱、消息队列等统称为“事件”,然后通过一个称为“事件控制块(ECB)”的数据结构来管理事件,也就是说,任务和中断服务程序可以通过ECB向另外的任务程发送信号,任务也可以等待另一个任...
2019-04-28 14:33:35 457
原创 UC/OS II 基础函数的分析
一、UC/OS II代码:①与硬件无关的内核代码②与处理器有关的代码移植③用户配置文件二、主要函数(1)OSInit()(2)OSStart(3)OSTaskCreate(4)OSTimeDly(5)OSTimeTick(6)OSTaskDel(7)OSIntEnter(8)OSIntExit(9)OS_ENTER_CRITICAL和OS_EXIT_CR...
2019-04-28 11:13:23 376
原创 STM32 下载提示flash timeout.reset the target and try it again
编译环境keil 5 下载器ST-link 解决工具J-Link下载提示flash timeout.reset the target and try it again1.keil的配置 首先是读到芯片的ID 配置正确的falsh 看看能不能下载2.如果还不可以就使用J-link连接到芯片,就是SEGGER自带的J-Link STM32 Unlock,如下图所示,就可以下载了3.如...
2019-03-20 10:11:23 43119 3
原创 Linux下的c++开发(1)
在linux环境下按住Ctrl、Alt和t进入控制台,一下操作都在控制台操作1、文件操作mkdir:新建文件夹ls:显示当前文件夹下的所有文件rm:删除cp:复制文件mv:移动文件2、Vim编辑器的使用(1)vim xx.cpp 建立并进入文件(2)按Insert键进入编辑模式,可以写代码(3)写完之后,按Esc进入底行模式,按:wq保存并退出/按:q就退出没保存3、C++...
2019-03-07 23:12:04 1217
原创 STM32 ADC的使用
ADC既是模数转化,把模拟信号量转换成数字量,一般要经过抽样、量化和编码三个步骤。1.抽样率/采样速率(1)首先要选择ADC时钟,以F407为例,不分频时钟为84M,一般要低于36M,这里我选择4分频。 ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;//预分频4分频。ADCCLK=PCLK2/4=84/4=21Mhz,...
2019-03-04 22:59:32 1422
原创 C语言总结(3)
1.printf打印函数(1)%d 按照十进制整型数打印(2)%6d 按照十进制整型数打印,至少 6 个字符宽(3)%f 按照浮点数打印(4)%6f 按照浮点数打印,至少 6 个字符宽(5)%.2f 按照浮点数打印,小数点后有两位小数(6)%6.2f 按照浮点数打印,至少 6 个字符宽,小数点后有两位小数此外,printf 函数还支持下列格式说明:%o 表示八进制数;%x 表示十六进...
2019-02-28 23:48:31 204
原创 ARM相关常识
一.存储格式ARM体系结构可以用两种方法存储字数据,分别为大端模式和小端模式。大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。小端模式(高高低低):字的高字节存储在高地址字节单元中,字的低字节存储在低地址字节单元中。二、ARM处理器工作模式1、用户模式(usr,User Mode):ARM处理器正常的程序执行状态。2、快速中断模式(fiq,Fa...
2019-02-20 23:10:22 382
原创 使用状态机完成ID卡曼彻斯特解码
一、什么是曼彻斯特编码?曼彻斯特是一种不归零的编码方式,在信号位中电平从低到高跳变表示1,在信号位中电平从高到低跳变表示0。注:编码速率为载波速率的一半二、C语言状态机主要有由事件和状态构成,由事件驱动状态。 | |--------&amp;gt;执行动作action 发生事件 -----&amp;gt;| cur_state | ...
2019-02-18 23:42:17 2827
原创 STM32 定时器的使用
1.TIM定时器的时间计算以stm32f4为例,APB2时钟最高84M,APB1时钟最高42MTIM使用APB2时钟,具体可查询时钟树(以不分频时钟84M做计算)时钟/psc(分频系数/84-1)*ARR(重装载值/500-1)=每次产生中断时间TIM1_Init(500-1,84-1);每次中断时间=84M/84 *500=500 ms*注:PSC和ARR都是从0开始的,所以要减1。...
2019-01-28 21:03:37 631
原创 C语言总结(2)
1.移位算术符:(1)如果被移位的对象为无符号,则空出的位置被0填充。(2)如果被移位的对象为有符号,则空出来的位置即可被0填充也可以被符号位的副本填充。(3)low+high&gt;0,mid=(low+high)&gt;&gt;1;和mid=(low+high)/2;效果是一样的,但前者效率更快。2.rand随机数rand随机数并不真正的随机数,是按指定顺序产生的。srand()为随...
2019-01-28 00:05:04 145
原创 C语言总结(1)
1.函数返回值:不能是一个局部变量的数组,因为函数结束后会被摧毁,可以使用指针赋值,再作为返回值。2.有一个数组a[12][31] ,a[4]表示a[12][31]二维数组的第五行,sizeof a[4]=(int)*31。3.字符与字符串:单引号括起来代表一个整数,而用双引号括起来的代表一个指针。4.运算符优先级(1)逻辑运算符&gt;关系运算符(2)算术运算符&gt;移位运算符&gt...
2019-01-26 17:39:45 171
原创 虚拟机中SSH无法连接
1.首先要确保在电脑上和虚拟机中都安装了ssh,虚拟如果没有装,则在控制台中输入sudo apt-get install openssh-server安装,使用ps -e | grep ssh查看ssh服务。如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。2.去看电脑网络和共享中有没...
2018-12-07 23:17:04 1882 1
原创 焊接小技巧
1.在焊接贴片电阻或者电容时,先在一侧焊盘上点上锡,在用镊子把元件放上去,用烙铁把刚点上的锡熔化,再焊另一边。2.焊接贴片芯片时,对准引脚后,在其一侧加上大量的锡,用刀头的焊铁从一侧到另一侧轻微地抖动,使锡珠流到一侧,用焊铁向外带出锡珠。此时,可以倾斜电路板,使焊珠更容易带出来。如果还有短路的地方,加点锡,按照以上方法在弄。3.一般焊接的温度大概在350度,如果是0欧电阻,有没有电阻时,可以帮...
2018-12-07 22:42:56 2717
夏普GP2Y1051AU0F 51+12864.zip
2020-07-08
ComparePlugin_v2.0.0_x86 and x64.rar
2020-06-11
物联网智能鱼缸.zip
2019-09-01
你好,放大器
2018-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人