自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (13)
  • 收藏
  • 关注

原创 S32K SPI调试

S32KNxp在汽车领域,目前主流的单片机还是S32K这个系列,cortex M4的内核。LPSPIS32K的SPI 叫LPSPI,和其他单片机差不多,涉及到的寄存器还比较多。配置时钟在使用LPSPI之前,必须要配置时钟。PCC->PCCn[PCC_LPSPI0_INDEX] |= PCC_PCCn_PCS(1) | PCC_PCCn_CGC_MASKPCC_PCCn_CGC_MASK不配置,直接操作SPI相关寄存器,程序直接跑飞,产生硬件保护中断。PC..

2020-10-27 17:07:59 3373

原创 汽车RKE方案设计原理及实现

RKE RKE,汽车遥控钥匙进入。数据加密方式 通信加密算法是基于Microchip Keeloq加密算法中的标准算法,详细过程如图1所示,发送数据是由28位ID、64位编码密码、16位同步计数值、2位状态及4位按键值经过Keeloq加密,产生的一组66 位的随机数据。没有任何方法可以预测数据的变化规律。 如图2所示,是遥控数据的解密过程,RKE 接收到数据后也需要相应的解码密码通过解码运算后才能得到开锁或者闭锁信号。RKE数据...

2020-10-08 09:40:09 2554

原创 SPI调试

SPI调试过程中,经常遇到的问题。1、4种模式时钟的极性和采样的时机主从双方需要保持一致。当然,数据传输的MSB还是LSB也需要注意。2、SPI读写操作在操作SPI时,先要使能片选CS,操作完成后,再关闭片选。ClrPIN_CS();SPI_WRITE_READ(tx_buf, num, rx_buf);Delay(t);SetPIN_CS();SPI的读写是同时进行的,因此tx_buf [i]和rx_buf[i]在时序上一一对应。3、阻塞延时...

2020-08-20 17:17:09 1816

原创 高频解码

射频 射频RF在汽车上的应用比较多。一般分为高频(433M)和低频(125K)。高频适用于距离较远的无线通讯,比如遥控开闭锁(RKE);低频适用于距离较近的无线通讯,比如轮胎标定。像PEPS那就既有高频也有低频。 这里主要谈一下,高频接收的问题。先来看一下高频信号,通信数据帧的编码格式。编码格式带唤醒场的数据格式 唤醒场 同步场 数据场 不带唤醒场的数据格式 帧间间隔 ...

2020-08-15 11:24:43 320

原创 奇怪的函数返回值

最近在做CRC校验的时候,发现一个奇怪的问题。根据标准,写了一个CRC校验函数,unsigned char crc8(unsigned char *ptr, unsigned char len,unsigned char poly){ unsigned char i; unsigned char crc; crc=(unsigned char)crcchushizhi; while(len-- !=0) { for...

2020-08-13 10:44:37 142

原创 车窗霍尔防夹

应用背景 现在带自动升功能的汽车车窗,一般都要求带防夹功能。自动升功能,就是开发触发一下,车窗自动上升到顶。在车窗上升到顶的过程中,如果夹到物体比如说人手,车窗会产生防夹功能,也就是自动回弹,车窗下降一段距离。这就是防夹功能,相当于自动检测被夹物体,并主动释放被夹物体的功能。防夹产品类型 目前市场上的防夹产品按原理来分,主要分为两类:霍尔防夹和纹波防夹。霍尔防夹,需要搭配霍尔电机,通过采集霍尔电机发出的两路霍尔信号来检测车窗的位置,进而判定防夹。纹波防夹,则不需要霍...

2020-07-11 15:41:00 4599

原创 车载产品Bootloader功能的应用与实现

应用 Bootloader,即在线程序烧写。很多汽车电子产品,都需要具备在线固件更新功能。这主要是因为产品在装车后,往往不方便单独拆卸,如果要对其进行软件更新,就只能通过通用外部接口ODBII上的CAN线来进行烧写升级。基本原理 要实现在线程序烧写,那么就需要把单片机的存储空间分成两个部分,分别用来存放自举程序和应用程序。 自举程序,我们一般称为boot程序,它主要有两个功能:用于引导应用程序执行;实现应用程序的更新刷写。应用程...

2020-07-10 15:43:01 1143

原创 CAN网络管理

为什么要网络管理?因为不同ECU对电源有不同的要求。一般来讲,有这样3种情况:1、允许直接断电的ECU,比如座椅模块,IGN off后,可以立马进入休眠节电。2、断电前需要延时的ECU,比如空调模块,IGN off后,风扇需要继续工作一段时间再进入休眠。3、需要一直带电的ECU,比如安全防盗模块,不允许休眠,需要一直处于工作状态。网络管理的功能网络管理主要负责以下几个功能:1、保证网络同步进入睡眠状态2、网络启动后确定网络配置3、运行过程中监控网络配置..

2020-07-10 15:10:16 3771

原创 基于PWM控制的声音播放的实现

1、应用背景 在现在的电子产品中,客户往往有些对声音提示或者音效反馈的需求,因此需要我们提供能发声的产品方案。现在也有些专门的语音处理芯片,可以由单片机直接控制语音播放,需要播放的声音就直接预先固化在该语音芯片中。但是这种方式有一点的局限性,比如价格较高、声音不能更改编辑。现在介绍另外一种语音播放方案,直接通过单片机输出的PWM方式播放语音。下面先来介绍一下这种声音播放的原理。2、语音播放原理 我们一般采用62.5Khz的PWM信号作为声音载波信号,通过改...

2020-07-04 11:53:25 9647

原创 Autosar E2E功能安全算法实现

汽车零部件中有很多零件是涉及到功能安全的。比如说方向盘开关,一般都有自动巡航功能。车辆在自动巡航的过程中,制动巡航取消功能失灵是威胁到人生安全的。因此这里一般都需要功能安全设计。但是根据不同的安全等级,产品会有不同安全功能设计。安全等级约高,相关安全功能设计约复杂,安全保障程度也就越高。 ISO 26262标准中对系统做功能安全设计时,前期重要的一个步骤是对系统进行危害分析和风险评估,识别出系统的危害并且对危害的风险等级——ASIL等级(Automotive Safety...

2020-06-27 15:23:23 6662

原创 指针的非法释放造成的程序崩溃

在调试上位机的过程中,会遇到程序时常崩溃的问题。debug发现,程序在运行到这里pDlg->m_AppBlock.LoadFile(pDlg->m_strFilePath);,造成的报错弹出。分析这个函数的包含了指针释放和新建的步骤:for (ULONGi=0; i<m_AddrNode.m_AddrNodeNum; i++) { if (m_Block[i].pBlockBuf != NULL) { delete[] m_B...

2020-06-27 11:11:18 493

原创 灰度模板匹配算法

1、介绍基于灰度的图像匹配算法包括:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。下面介绍其中一种绝对误差和算法(SAD)。2、绝对误差和算法绝对误差和算法(Sum of Absolute Differences,简称SAD算法)。设S(x,y)是大小为

2016-04-13 10:55:49 10104 1

原创 PMAC上位机编程

1、背景PMAC是一系列控制卡的简称,常用的有PMAC1、PMAC2、Turbo PMAC1、 Turbo PMAC2、UMAC、Clipper等,基本功能和使用方法是一样的。在复杂条件下将预定的控制方案、规划指令转变成期望的机械运动,实现机械运动精确的位置控制、速度控制、加速度(转矩)的控制。PMAC是一系列控制卡的简称,常用的有PMAC1、PMAC2、Turbo PMAC1、 Tu

2016-03-31 10:54:39 3571 4

原创 MFC文件操作

1、背景软件重启如果要保存上次设置的参数,那么就需要用到文件操作。2、几个常见的问题1)字符串写入不完整file.Write(str.GetBuffer(),len*sizeof(TCHAR));不能直接用sizeof(str)求长度。2)换行 换行一般有三种格式: “\n" "\r\n" "\r" 用"\r\n"最保险

2016-03-08 17:21:11 562

原创 boost库的安装和使用

1.  介绍boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并

2016-02-26 15:52:41 602

原创 auto_ptr应用

1、智能指针为什么要使用智能指针?我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程序还未执行到delete时就跳转了,或者在函数中没有执行到最后的delete语句就返回了,如果我们不在每一个可能跳转或者返回的语句前释放资源,就会造成内存泄露。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出

2016-01-19 17:06:41 399

原创 控件随窗口大小自动缩放

1、应用需求显示器大小不一,应用软件窗口需要根据各种不同的显示器大小显示。因此需要相关控件随窗口大小自动缩放的功能。2、在OnInitDialog()函数中添加如下代码CRect rect;GetWindowRect(&rect);m_listRect.AddTail(rect);//对话框的区域CWnd* pWnd = GetWindow(GW_CHI

2016-01-05 11:59:36 3298

原创 MFC对话框界面美化

1、MFC标准对话框界面MFC标准对话框界面并不美观,也不符合产品个性化需求,因此需要对对话框界面进行美化。可以增加如下美化工作:1)背景贴图2)控件贴图3)控件类优化2、背景贴图添加消息相应函数OnEraseBkgndBOOL CuiDlg::OnEraseBkgnd(CDC* pDC){// TODO: 在此添加消息处理程序代码和/或调用默认

2016-01-04 16:26:06 4911 1

原创 VC2010项目打包

1、选择“新建项目”->“其他项目类型”->"安装和部署"->“Visual Studio Installer”->"安装项目"命名:智能软件。2、选择“应用程序文件夹”点右键添加文件,添加需要打包的库文件和执行程序以及中间文件,添加文件都是已经编译过的应用程序,在debug或者release目录下的所有文件。其他依赖库也需要在这里添加,比如halconcpp.lib。

2015-12-15 14:29:38 548

转载 VC++中字符串编码的转换

在以前VC++6.0中默认的字符集是多字节字符集(MBCS:Multi-Byte Character Set),而VS2005及以后默认的字符集是Unicode,这样导致以前在VC6.0中非常简单实用的各类字符操作和函数在VS2010环境下运行时会报各种各样的错误。字符集可以通过工程属性修改:“工程-属性-字符集”。CString在Unicode和多字节字符集下的区别:CStrin

2015-12-01 16:56:32 394

原创 windows udp网络数据包收发控制

1、所需的头文件、库文件和DLL目前使用最广泛的Windows Socket2.2版本,所需的一些文件如下(以安装了VC6为例说明其物理位置):l         头文件winsock2.h,通常处于C:"Program Files"Microsoft Visual Studio"VC98"INCLUDE;查看该头文件可知其中又包含了windows.h和pshpack4.h头文件,

2015-11-26 17:19:49 3183

原创 halcon数据类型分析

1、HTuple数据类型halcon中最重要的数据类型HTuple,在C++里面,halcon将HTuple类型封装了类,其始祖类HRootObject,这个类相当于MFC里面的CObject,halcon从HRootObject派生了HBaseArray,当然这两个类是虚基类,有一些方法需要我HTuple自己实现,当然也有一些方法可以直接用的。这两个类在HCPPUtil里,可以看到。1)

2015-11-23 16:12:02 6114 1

转载 Microsoft Visual C++ Package Server 已停止工作

Microsoft Visual C++ Package Server 已停止工作使用vs2010时,有时会提示“Microsoft Visual C++ Package Server 已停止工作”,是否需要关闭程序或者调试程序。CPkgSrv 是关于Visual Studio 2010 中IntelliSense。 可以从菜单栏中的Tools-》Options-》Te

2015-11-19 11:04:10 8460 3

原创 c++捕获halcon异常

一、问题halcon算子出现调用问题会自行报错,从而使得程序崩溃。可以通过采用C++捕获错误,来规避这个问题。二、解决可以定义自己程序的异常,在try catch前使用InstallHHandler安装。1、自定义异常void MyHalconExceptionHandler(const HException& except){throw except;}

2015-10-26 15:09:33 2955

原创 训练匹配模板

1、区分各自硬币* distinguishing of coins with the help of shape-based matching* dev_close_window ()dev_open_window (0, 0, 652, 494, 'black', WindowHandle)dev_update_window ('off')Names := ['germa

2015-09-24 17:37:22 504

原创 一种几何匹配的改进处理方式

1、背景普通的几何匹配常常无法到达理想的匹配结果,比如,目标物体出现细微的形状或者大小偏差,就容易匹配不到。本文讨论一种方法,通过均值化多个已知模板,从而提高算法的鲁棒性。2、设计思路1)人工模板绘制通过对目标物体的已知的几何特征,绘制出相应的人工模板,便于后续的对模板的提取。具体实现及注解:*图片加载dev_update_off ()dev_close

2015-09-23 16:02:51 1290

原创 halcon几何匹配相关算子与参数解析

1、create_shape_model(Template : :NumLevels,AngleStart,AngleExtent,AngleStep,Optimization,Metric,Contrast,MinContrast :ModelID)Template :用于创建模板的图像NumLevels:最大金字塔级别,级别越高速度越

2015-09-07 17:38:15 2723

原创 采图延时

1、现象部分PC机在见千兆相机时,会产生严重的图像采集延时。2、解决调整网卡参数配置:1)查看连接速度和双工模式设置成千兆模式2)查看巨型帧设置为最大9KB

2015-08-26 09:49:40 489

原创 Blob分析

1、意义Blob分析是对图像中相同像素的连通域进行分析,该连通域称为Blob。Blob分析可为机器视觉应用提供图像中的斑点的数量、位置、形状和方向,还可以提供相关斑点间的拓扑结构。2、适用范围仅针对二维目标图像和高对比度图像,适用于有无检测和缺陷检测。3、分析的主要过程获取图像->分割图像(区分前景像素和背景像素)->特征提取(比如面积、重心、旋转角度等)

2015-08-21 17:34:27 5333

原创 Tab控件下子对话窗口的按钮不响应消息

1、遇到问题tab控件创建两个新页面程序,再为每个页面创建单独的类,在主对话框添加两个对话窗成员变量 CDialog m_page1; CDialog m_page2;这两个对话框已设置为child型和无边框型。tab页面的切换没问题,问题是我在这两个子对话框上添加了按钮后,为按钮在各自的类里添加响应函数却无法进入。2、问题原因原因在于我添加了新的对话框类,在主

2015-08-03 15:33:24 802

原创 主程序做死循环,导致计时功能失效

1、主程序中构造死循环setTimer(1,1000,NULL);  while(1)  {      if( bCameraOpenSuccess == TURE ) //在检测时间内,成功打开相机    {        KillTimer(1);        break;    }    if( bCameraOpenSuccess == F

2015-07-31 14:30:13 684

原创 MFC调用halcon实现几何匹配

1、使用halcon助手快速导出几何匹配实现流程1)选择助手->打开新Matching2)选择创建模板,加载图片,比如D:/1.bmp3)选择绘制轴平行矩形,生产ROI4)选择代码生成,将产生如下代码* Matching 01: BEGIN of generated code for model initializationset_system ('border_s

2015-07-29 10:42:44 2368

原创 MFC右键弹出菜单,并添加响应函数

遇到问题:添加右键弹出菜单,并添加响应函数,点击菜单项却进不响应函数。实现步骤:1、新建一个菜单资源,IDR_TOOL_MENU。2、在ClassWizard中void CDlgTool::OnRButtonUp(UINT nFlags, CPoint point) {CMenu menu; //定义下面要用到的cmenu对象menu.Loa

2015-07-28 17:38:21 14119

原创 win32和x64平台的切换

1、链接找不到被调函数配置属性->VC++目录->包含目录:添加include目录配置属性->VC++目录->库目录:添加lib目录(区分32位和64位库文件)配置属性->VC++目录->可执行文件目录:添加bin目录(区分32位和64位可执行文件)链接找不到被调函数一般是由于库文件没有关联正确造成的,有可能是64位程序关联32位的库文件指定库文件,链接起-

2015-07-24 10:44:06 7464

原创 MFC+HALCON图片本地加载显示

1、添加halcon库除了配置include和lib的路径外,还需要在掉用halcon函数的文件添加:#include "halconcpp.h"using namespace Halcon;2、申请两个halcon变量Hobject m_Image; //图片变量HTuple m_hHalconWnd; //halcon窗口句柄3、 绑定halcon显

2015-07-22 17:35:56 3817

原创 dll库加载所产生的问题

1、现象描述dll在原程序中能正常执行,但是动态加载后执行报错(自动触发一个断点,非人为设置;或者报非法位置写入)。2、分析问题原因程序代码是一样的,唯一的不同就是程序放置的位置。这个位置包括代码段位置和数据段位置,问题就产生在数据段的位置,数据段由dll自己申请所得。如果数据初始化不完全,或者数据段申请空间过大导致堆栈溢出,这将使整个程序崩溃。3、问题解决

2015-07-06 16:17:53 392

原创 STL应用

1、类型定义工具类型typedef enum _ENUM_TOOL_TYPE{_emNoneType,_emMatch_GrayMatch,}//存储数据类型typedef struct _st_Tool_Prop{enumToolType emToolType;CDialogEx* m_pDlgTool;CDialogEx* m_pDlgT

2015-06-24 15:24:18 346

原创 上位机数据通讯

1、应用背景上位机处理过后的数据结果,经常需要传给下位机,交由执行部件处理。上下位机根据通讯方式种类比较多,经常用到的是串口通讯和网口通讯。传输方式可以根据实际情况,任意选取,这就需要上位机兼容这些通讯方式。再则,就是需要提供数据任意加载的功能,用户根据需要可以通过设置选择自己所需要的某部分数据或者是完整的数据来发送。2、数据加载图像处理由独立线程单独完成,以免造成

2015-06-23 17:34:49 1808

原创 整型和字符串、字符串和字符数组互转

1、整型转字符串int i;CString str;str.Format(_T("%d"),i);2、字符串转整型int i;CString str;i = atoi((_bstr_t)str);

2015-06-11 11:44:13 441

原创 pcap调用记录

1、无法打开pcap/pcap.h文件问题产生原因,软件移动了位置,路径配置又没有采用相对路径,因此需要针对每一个项目做项目属性配置。注意:路径表示,"/"和"\"windows都能识别,但是在某些情况向用"\"会报错比如,#pragma comment(lib,"../WpdPack/Lib/Packet.lib"),如果用"\"编译器会认为是专业字符。2、

2015-06-03 15:03:37 536

NXP S32K系列单片机BootLoader源代码.rar

NXP S32K系列单片机BootLoader源代码,已经过批量验证,CAN通信刷写,支持OTA。

2022-01-12

hex文件转S19文件VC/MFC程序源代码.zip

基于VC/MFC框架编写,可以将多个hex文件,转换成S19文件,带地址偏移和地址填充,并且整合成一个文件

2022-01-08

NXP单片机MC9S12ZVL系列CodeWarrior环境LIN总线产品源代码.rar

NXP单片机MC9S12ZVL系列CodeWarrior环境,带LIN总线产品源代码

2021-12-07

赛普拉斯Cypress单片机PSoC_4100S系列CAN bootloader源代码.rar

赛普拉斯Cypress PSoC_4100S系列CAN bootloader源代码,带CAN协议栈

2021-11-26

汽车电子嵌入式编程车窗霍尔防产品夹源代码.rar

汽车电子嵌入式C语言编程,车窗霍尔防夹产品源代码,霍尔防夹算法研究。

2021-11-18

NXP KEA128系列单片机BootLoader产品源代码.rar

NXP KEA128系列单片机BootLoader源代码,已经过批量验证,CAN通信刷写,支持OTA,包含上位机VC源代码,CAN诊断协议栈,S19文件解析。

2021-06-30

BootLoader上位机

bootloader CAN在线刷写,上位机配套程序。VS/MFC编写,支持周立功CAN卡USBCAN-2E-U。

2020-12-19

NXP S12G128 bootloader

NXP S12G128 支持CAN在线诊断刷写

2020-12-19

PWM控制声音播放源代码

采用PWM信号作为声音载波信号,通过改变其占空比的来发出不同的声音。

2020-12-18

控件自适应源码

对话框内所有控件,随窗口大小自动缩放,支持不同大小的显示窗口。

2016-01-05

界面美化源码

MFC对话框界面美化,调用CShadeButtonST类,支持图片透明显示。

2016-01-04

linux 6467 spi驱动源码(附带测试代码)

DM6467t硬件开发平台,Linux系统开发环境,SPI驱动源代码和相关测试代码以及makefile,测试通过,可以在目标板上正常运行。

2014-12-10

DSP编程规范

TI公司发布的一套DSP算法标准——TMS320 DSP Algorithm Standard,其中规范了DSP算法软件的开发,并提供了类似C++语言类的封装方式的算法接口,使得算法集成变得简单统一,为DSP的编程人员提供一套通用方案。

2014-10-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除