玩过Arm-2D的同学都知道,官方的lcd_printf函数只提供了一种6*8点阵的字库,而且是不支持显示汉字的。想想也是,Arm-2D是给小资源单片机提供显示驱动的,一个汉字字库需要的flash少则也得几十上百KB。可是,我们又有显示汉字的需求怎么办?贴图片好像也很占空间,有没有又能省空间又可以显示汉字的方法呢?哈哈哈,这种两全其美的事应该没有,不过,如果我们只是显示几个特定的汉字而不是整个字库的话倒是可以,大家应该已经想到了,那就是把这几个特定的汉字做成字库,然后调用lcd_printf函数显示。为了和官方的函数名有所区别,我们就起名为 My_lc...
上一篇我们简单介绍了一下arm公司的开源项目Arm-2D,这一篇我们就用Arm-2D制作一个背景可以有动画效果的进度条,效果如下图:什么,背景还有动画效果,这的消耗多大的flash资源啊,小资源单片机能开销的起吗?哈哈哈,别忘了Arm-2D是专门为小资源单片机量身定做的显示驱动,实现上图的效果其实只用了一张17*17像素的小图片素材,如下图所示什么,这么小的素材是怎么实现动画效果的呢?背景会动只是我们的视觉错觉,其实只是实现一个周期函数,所以,我们只要做一个周期的图片(17*17像素图片素材),然后,不停的填充(重复周期)就可以了。如下图所...
1、Arm-2D是什么Arm-2D是arm公司开源的一个嵌入式软件,专门为小资源单片机提供显示驱动,此软件的github 地址如下:https://github.com/ARM-software/EndpointAI那它为什么可以为小资源单片机提供显示驱动呢?这主要是他提供了一个简单通用的PFB技术,这样就可以根据资源的大小灵活的分配显示缓冲区的大小了。那么PFB是什么呢?2、部分帧缓存PFB(Partial Frame Buffer)很多单片机的ram通常都不会很大(4K ~ 32K),然而一个常见的320*240的16位色的LCD屏幕的完整缓存就需要153.6KB RAM,这时候小资源单片机拥有一块完整的缓存就不可能了,部分帧...
上一篇我已经简单的实现了数据上传云平台,这一篇我们简单把ESP8266配置成web服务器,用手机(或电脑)的浏览器来访问8266上的服务器,8266将模拟的温度数据发送给浏览器。WEB实验简介:今天我们使用HTTP协议中的GET方法来获取8266的温度数据。首先我们把8266配置成web server,然后通过浏览器输入8266的IP地址来访问,8266服务器每隔2秒更新一次温度数据(温度数据每访问一次自动加1)。 程序流程如下图所示:一个简单的HTML网页那要访问web服务器了,是不是我们也要制作一个网站让浏览器访问呢?是的,简单弄了一个HTML网页,并使用JavaScript脚...
前面几篇文章我们基本上讲完了8266的联网操作,在开始讲连接互联网上传云平台之前,有必要讲一下8266 GPIO的操作,这样我们就可以读取传感器的值,方便我们上传云平台。这一篇顺便把SDK编程的注意事项也简单讲一下。1、GPIO输出高低电平打开编程指南,找到GPIO的介绍,如下图:参考文件也告诉我们了,在/user/user_plug.c文件中。好了,那我们也来个点灯的程序,实现这样的功能:3个LED灯,每秒点亮一个,其他两个熄灭,如此循环就是一个简单的流水灯了。有过单片机 编程基础的都应该会写吧,写个while(1)循环就可以了。好,我也写了一个,程序如...
1、什么是smartconfigsmartConfig简称一键配网技术。在物联网设备中,一般是没有键盘输入和显示屏的,那如果我们想要连接WiFi路由器,怎么输入WiFi密码呢?这时,就需要一种配网技术,通过无线网络发送特定的数据包(包含路由名和密码),让物联网设备获取到WiFi密码,从而连接上无线路由器。smartConfig就是为了解决设备联网问题的。通过简单的技术接口,用户只需要利用简单的APP应用便可以让物联网设备连接到指定的路由器上。2、smartconfig技术原理smartconfig技术原理也比较简单,我画了一张图,如下:首先手机连接到WiFi路由器;然后手机向局域...
上一篇我们简单的用HTTP协议数据包访问了百度的服务器,这一篇我们就详细讲一下HTTP协议中的几个方法。HTTP协议方法 简介首先,HTTP协议定义了客户端与服务器交互的方法,其中最基本的有4种,分别是GET方法、POST方法、PUT方法、DELETE方法。URL(uniform resource locator)全称是统一资源定位系统,由于互联网上的资源可以用简单的字符串来表示,而这些字符串就被称作:“统一资源定位器”(URL)。简单的讲,我们可以这样认为,一个URL字符串,用于描述互联网上的资源,而HTTP协议中的GET、POST、PUT、DELETE方法就分别对应着对这个资源的查看、...
上一篇我们把TCP通信讲完了,这一讲我们讲一下8266的http通信,简简单单的访问下百度网址("http://www.baidu.com"),试试百度服务器会不会给我们回复数据(* ̄︶ ̄)。1、什么是HTTPHTTP(Hyper Text Transfer Protocol)超文本传输协议,是一个简单的请求-响应协议,它通常是运行在TCP通信之上。指定客户端发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出。HTTP通信客户端就是终端用户,服务器端就是网站。通过使用Web浏览器、网络爬虫或者其它的工具(esp8266),客户端发起一个到服务器上指定端口(默认端口...
上一篇讲了8266作为client与电脑进行TCP通信,今天我们接着讲一下8266作为server与电脑进行TCP通信。首先,我们让8266连接上路由,路由会分配一个IP地址给8266.连接成功后,我们把8266配置成server模式,监听客户端的连接,当有client连接时,就可以和8266进行TCP通信了。我画了张TCP通信的示意图,如下注意,路由器分配给8266的IP要记录下来(通过串口打印出来),电脑的客户端是通过这个IP连接8266的。那我们怎么通过程序获取8266的IP呢?查看编程指南,有获取IP的函数(wifi_get_ip_info)。如下图下面我们讲一下esp8266配置成server模式的步骤:...
上一篇我们讲了esp8266连接路由器,这一篇就讲一下局域网中的UDP通信。1、UDP简介UDP 是User Datagram Protocol的简称。翻译成中文是用户数据包协议,是OSI(Open System Interconnection开放式系统互联) 中一种无连接的传输层协议。提供简单不可靠信息传送服务( 会丢数据包)UDP协议位于传输层,是IP协议的上一层。UDP具有不提供数据包分组和不能对数据包进行排序的缺点。也就是当报文发送之后,是无法得知其是否安全完整到达的。不过UDP协议也有他的优点,在许多应用中只支持UDP,如:多媒体数据流,因为不产生任何额外的数据,即使有破坏的包也...
用esp8266连接路由器时,要设置成station工作模式,然后配置好热点名字 和密码就可以连接了。那我们首先 讲一下8266的工作模式。1、esp8266的工作模式首先,我们 去乐鑫官网下载SDK编程手册,如下《2C-ESP8266__SDK__Programming Guide__CN_v1.2.0.pdf》打开SDK编程手册,如下图,找到wifi_get_opmode函数如图esp8266的WiFi工作模式有3种,下面是获取工作模式的程序,void ICACHE_FLASH_ATTR user_init() //程序入口{ uint8 opmode; uart_init(115200,115200); ||模式查看函数 opmode = wifi_get_opmode(); ||打印当前的模式 ...
上一篇我们讲了小方块右移的代码,有几个动手能力强的小伙伴在看原理讲解的时候,通过自己的思考发现,给我提了一些很好的建议。我先把其中的一条提出来,供大家参考。希望大家多动脑和手实现自己的小游戏。我很喜欢的一句话也分享给大家:想象力比知识更重要。Imagination is more important than knowledge。如图,昨天我们讲了右移碰到横线的3种情况,有小伙伴提出后面两种情况用一个条件就可以判断出来,即x+10大于x1 且 x+10小于x1+2y1 大于y 且 y1小于y+10(这一个条件就可以判断后面两种情况了,大家也可以思考下(* ̄︶ ̄))原理如下图...
上一篇主要讲了走迷宫小游戏的原理,链接如下:这一篇我们讲一下程序是怎么实现的。代码整体结构如下:void maze_people_play(){ unsigned char key,key_flag = 0; static unsigned char drt = 0; ||获取按键值 key = get_key(); if((key == DIRECTION_RIGHT)||(key == DIRECTION_DOWN) ||(key == DIRECTION_LEFT)||(key == DIRECTION_UP)){ drt = key; key_flag = 1; } ||小方块按照drt的方向前进 maze_people_run( drt); ||判断是否走到了十字路口或丁字路口 if(find_help_erar( drt ))...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是卡尔曼滤波与目标追踪介绍,希望能对你有所帮助一、卡尔曼滤波介绍1.1 卡尔曼滤波是什么本节为卡尔曼滤波,主要讲解卡尔曼滤波的具体推导,卡尔曼滤波在行人状态估计中的一个小例子。我们通常要对一些事物的状态去做估计,为什么要做估计呢?因为我们通常无法精确的知道物体当前的状态。为了估计一个事物的状态,我们往往会去测量它,但是我们不能完全相信我们的测量,因为我们的测量是不精准的,它往往会存在一定的噪声,这个时候我们就要去估计我们的状态。卡尔曼滤波就是一种结...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是Autosar中FULL CAN和Basic CAN介绍,希望能对你有所帮助一、Full CAN和Basic CAN1.1 Basic CAN在AUTOSAR(Automotive Open System Architecture)中,Basic-CAN与Full-CAN是两种不同的CAN通信模式,它们主要区别在于硬件对象(Hardware Object Handle,简称HOH)的处理能力和缓存机制。先来看看官方文档的描述:Basic-CAN允许一个硬件对象HOH处理多个L-PDUs,而FULL CAN只允许处理一个L-PDUsBasic-CAN1,多个CAN ID处理能力:Basic-CAN允许一个硬件对象(HOH,Hardware Object Han...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是Autosar系列之ECUC模块介绍,希望能对你有所帮助一、ECUC模块简介ECUC用于辅助配置工具完成配置的模块。主要提供 Pdu 的定义,其它模块通过关联 EcuC 中 Pdu,相互关联起来。数据在CAN通信协议栈各层间都是以PDU(Protocol Data Unit) 形式传输的, 为了将各层PDU关联起来, 则需要定义全局PDU(Global PDU) 。由于全局PDU不属于任何一个标准BSW模块, 所以AUTOSAR提出了一个EcuC模块来收集一些配置信息。二、ECUC模块配置介绍主要配置的是EcucConfigSet中的EcucPduCollection:...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是Autosar常用缩写介绍,希望能对你有所帮助一、Autosar常用缩写缩写词解释/描述中文AESAdvanced Encrytion Standard高级加密标准BSWBasic Software基础软件BswMBasic Software Mode Manager基础软件模式管理BSBlock Size块大小ComMCom Manager通讯管理模块CanSMCAN State ManagerCAN 状态管理CDDComplex Device Driver复杂设备驱动CanNmCan Network ManagementCan 网络管理CanTpCAN Transport LayerCan 传输层模块CBVControl Bit Vector控制位向量CWUCar Wakeup车辆唤醒CRCCyclic R...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是一文搞懂如何制作DBC文件,希望能对你有所帮助一、DBC介绍1.1 什么是DBC全称:Database CAN,CAN网络的数据库文件,定义了CAN网络的节点、消息、信号的所有细节,包括每个节点会发送哪些消息和接收哪些消息,每个消息里面包含哪些信号,每个信号位于消息的哪个位置,信号值有哪些,每个值代表的含义是什么,等等1.2 DBC的作用1,可以将CAN网络中数据解析成具体的报文(Message)和信号(Signal),可直接看到对应信号的值,方便分析。2,在进行Autosar配置时,有DBC文件的话,可...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是Autosar标准文档介绍,希望能对你有所帮助一、Autosar介绍最近项目中遇到需求不明确的问题,想查下Autosar标准中是否有提到,以此来说服客户,但翻了半天没找到,主要是Autosar文档很多,都不知道各个文档分别是介绍什么的,故此介绍一下。关于Autosar的介绍,有兴趣的可查看之前的文章:Autosar官网:https://www.autosar.org/AUTOSAR目前分为两种:Classic Platform AUTOSAR 、 Adaptive Platform AUTOSAR,也称为CP和AP。因为我用的是Classic Platform,所以本文介绍的都是CP。...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS的各种NRC介绍,希望能对你有所帮助一、NRC介绍诊断有2种类型的响应,肯定响应和否定响应。关于否定响应NRC的介绍,之前也有分享过,这里再简单回顾一下。可再回头去看看之前的介绍:当服务端收到诊断请求时,如果能执行则回复肯定响应,不能执行则回复否定响应;也有不给出响应的情况,就是抑制正响应(Suppress PositiveResponseMessageIndicationBit,简写为SPRMIB),通常来说,如果这个bit被置1,则ECU不会给出正响应(positive response)。但也有特例,后面会讲到,请继...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS的各种时间参数介绍,希望能对你有所帮助一、应用层时间参数在一开始做诊断的时候,看到这么多时间参数,真是头大,很多还长得很像,N_As,N_Bs, N_Cs等,这些到底代表啥含义呢?刚开始确实很头疼,我也是直接忽略,做其他任务开发,等基本功能都开发完了,后面发现升级的时候,出问题了,定位到和这些时间参数有问题,这才去研究这些参数的含义。接下来介绍一下这些参数。a)P2 Client:诊断工具成功发送诊断报文请求之后,等待ECU回复诊断响应的时间间隔b)P2* Client:诊断...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是MCAL的CAN模块配置介绍,希望能对你有所帮助一、CAN模块配置介绍之前也分享过Autosar的基础知识,不清楚且有兴趣的同学可参考之前的文章:在做车载相关的项目中,一般都会用CAN(或CAN FD)通信,当然也有Lin,FlexRay,更高级的甚至用以太网。初学者对这几个常用的车载总线不太清楚的,可以移步之前的文章:先简单介绍一下Autosar中CAN是如何通信的,数据流,Autosar如何配置。先来回顾一下Autosar的架构:普通CAN报文接收流程:CAN------CANIF------PDUR------COM发送流程就是顺序...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS和OBD的区别介绍,希望能对你有所帮助一、UDS简介UDS(Unified Diagnostic Services 统一的诊断服务)是一种通用的诊断服务标准,用于汽车电子控制单元(ECU)的诊断和调试。UDS是ISO 14229标准定义的一种通信协议,可以在CAN、LIN等多种总线上进行通信。关于UDS之前也介绍过,此处不再啰嗦了,感兴趣的看一下:0X10服务:0X11服务:0X27服务:0X28服务:0X3E服务:0X83服务:0X85服务:0X22服务:0X2E服务:0X14服务:0X31服务:0X19服务:二、OBD介绍2.1 OBD简介OBD(On-Boar...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是嵌入式常用通讯协议I2C协议简介,希望能对你有所帮助一、I2C协议介绍1.1 I2C简介Inter-Integrated Circuit 是一种简单、双向二线制同步串行总线。1.2 特点a)同步,半双工b)两根线,串行时钟线SCL,产生同步时钟脉冲;串行数据线SDA,传输串行数据。c)I2C总线上可以连接多个设备,既可以做主设备,也可以做从设备d)同步时钟由主设备产生1.3 协议格式a)起始信号:SCL为高,SDA由高变低(空闲状态都为高电平)b)停止信号:SCL为高,SDA由低变高c)应答信号:第9个时钟周期,SD...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是EB Tresos入门使用介绍,希望能对你有所帮助一、新建工程1.1 新建空白工程File->New->Configuration Project,或者在左侧工作区的空白处,鼠标右键,再New->ConfigurationProject1.2 填写工程基础信息填写工程基础信息:工程名称,工程路径,AUTOSAR版本;再点击next1.3 配置工程数据填写ECU ID,选择芯片型号,勾选自动生成。建议新手要勾上自动添加的那个勾,工具会自动配置好一些必要的参数。如果不勾选的话,很可能在配置的时候有一些错误解决不了1.4 添加模块添加几个常用的...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS诊断读取DTC信息0X19服务介绍,希望能对你有所帮助前言:之前有粉丝私信我说要看诊断19服务的文章,也答应了更新。最近一个月忙于项目,一直没时间写,有空的时候也很累,就拖到现在才写完,在这里说一声抱歉了。一、读取DTC信息服务19服务(ReadDTCInformation):用于读取ECU的故障信息,该服务允许客户端从任何服务器或车辆内的一组服务器读取服务器驻留的诊断故障代码(DTC)信息的状态。除非特定子功能另有要求,否则服务器应返回所有DTC信息。简单点说就是,当ECU发生故...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是毫米波雷达基础chirp、profile和frame的介绍,希望能对你有所帮助一、毫米波雷达简介毫米波雷达(millimeter-wave radar),工作在频率为30~300GHz,波长为 1~10mm的雷达。1.1 毫米波雷达优点成本适中,适度识别能力强不良天气抗干扰能力强。这是由于毫米波雷达波束窄、角分辨力高、频带宽、隐蔽性好。对烟、尘、雨、雾等具有良好的穿透性。1.2 毫米波雷达缺点可探测的角度小可探测的距离不如激光雷达关于雷达的基础知识介绍,什么是雷达,常见雷达的分类,不同雷达之间的特点,...
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是bin、hex、s19等文件格式的讲解,希望能对你有所帮助一、bin文件1.1 简介bin文件是一种二进制文件格式,通常用于存储固件程序。bin文件中的数据是按字节存储的,没有任何格式信息,存储的就是raw data,因此它们可以很容易地在芯片上进行烧录和执行,烧录的时候需要指定烧录地址。一般来说,使用bin文件的优点是速度快、体积小,但是不容易阅读和调试。来看一个bin文件的格式二、hex文件2.1 简介hex文件是一种十六进制格式的文件,它可以用来存储程序的机器码和地址信息。hex文件...