<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[天上人间的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/surui_555</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; surui_555]]></copyright><item><title><![CDATA[S32K SPI调试]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/109315298</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/109315298</guid><author>surui_555</author><pubDate>Tue, 27 Oct 2020 17:07:59 +0800</pubDate><description><![CDATA[S32K

Nxp在汽车领域，目前主流的单片机还是S32K这个系列，cortex M4的内核。



LPSPI

S32K的SPI 叫LPSPI，和其他单片机差不多，涉及到的寄存器还比较多。





配置时钟

在使用LPSPI之前，必须要配置时钟。

PCC-&gt;PCCn[PCC_LPSPI0_INDEX] |= PCC_PCCn_PCS(1) | PCC_PCCn_CGC_MASK

PCC_PCCn_CGC_MASK不配置，直接操作SPI相关寄存器，程序直接跑飞，产生硬件保护中断。

PC..]]></description><category></category></item><item><title><![CDATA[汽车RKE方案设计原理及实现]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/108959621</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/108959621</guid><author>surui_555</author><pubDate>Thu, 08 Oct 2020 09:40:09 +0800</pubDate><description><![CDATA[RKE

   RKE，汽车遥控钥匙进入。

数据加密方式

    通信加密算法是基于Microchip Keeloq加密算法中的标准算法，详细过程如图1所示，发送数据是由28位ID、64位编码密码、16位同步计数值、2位状态及4位按键值经过Keeloq加密，产生的一组66 位的随机数据。没有任何方法可以预测数据的变化规律。





    如图2所示，是遥控数据的解密过程，RKE 接收到数据后也需要相应的解码密码通过解码运算后才能得到开锁或者闭锁信号。





RKE数据...]]></description><category></category></item><item><title><![CDATA[SPI调试]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/108128009</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/108128009</guid><author>surui_555</author><pubDate>Thu, 20 Aug 2020 17:17:09 +0800</pubDate><description><![CDATA[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、阻塞延时
...]]></description><category></category></item><item><title><![CDATA[高频解码]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/108019555</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/108019555</guid><author>surui_555</author><pubDate>Sat, 15 Aug 2020 11:24:43 +0800</pubDate><description><![CDATA[射频

   射频RF在汽车上的应用比较多。一般分为高频（433M）和低频(125K)。高频适用于距离较远的无线通讯，比如遥控开闭锁（RKE）;低频适用于距离较近的无线通讯，比如轮胎标定。像PEPS那就既有高频也有低频。

 这里主要谈一下，高频接收的问题。先来看一下高频信号，通信数据帧的编码格式。



编码格式

带唤醒场的数据格式


			唤醒场
			
			
			同步场
			
			
			数据场
			
		

不带唤醒场的数据格式


			帧间间隔
			
...]]></description><category></category></item><item><title><![CDATA[奇怪的函数返回值]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/107974424</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/107974424</guid><author>surui_555</author><pubDate>Thu, 13 Aug 2020 10:44:37 +0800</pubDate><description><![CDATA[最近在做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...]]></description><category></category></item><item><title><![CDATA[车窗霍尔防夹]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/107285615</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/107285615</guid><author>surui_555</author><pubDate>Sat, 11 Jul 2020 15:41:00 +0800</pubDate><description><![CDATA[应用背景

   现在带自动升功能的汽车车窗，一般都要求带防夹功能。自动升功能，就是开发触发一下，车窗自动上升到顶。在车窗上升到顶的过程中，如果夹到物体比如说人手，车窗会产生防夹功能，也就是自动回弹，车窗下降一段距离。这就是防夹功能，相当于自动检测被夹物体，并主动释放被夹物体的功能。



防夹产品类型

   目前市场上的防夹产品按原理来分，主要分为两类：霍尔防夹和纹波防夹。霍尔防夹，需要搭配霍尔电机，通过采集霍尔电机发出的两路霍尔信号来检测车窗的位置，进而判定防夹。纹波防夹，则不需要霍...]]></description><category></category></item><item><title><![CDATA[车载产品Bootloader功能的应用与实现]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/107251570</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/107251570</guid><author>surui_555</author><pubDate>Fri, 10 Jul 2020 15:43:01 +0800</pubDate><description><![CDATA[应用

   Bootloader，即在线程序烧写。很多汽车电子产品，都需要具备在线固件更新功能。这主要是因为产品在装车后，往往不方便单独拆卸，如果要对其进行软件更新，就只能通过通用外部接口ODBII上的CAN线来进行烧写升级。



基本原理

   要实现在线程序烧写，那么就需要把单片机的存储空间分成两个部分，分别用来存放自举程序和应用程序。









   自举程序，我们一般称为boot程序，它主要有两个功能：用于引导应用程序执行；实现应用程序的更新刷写。应用程...]]></description><category></category></item><item><title><![CDATA[CAN网络管理]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/107251461</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/107251461</guid><author>surui_555</author><pubDate>Fri, 10 Jul 2020 15:10:16 +0800</pubDate><description><![CDATA[为什么要网络管理?

因为不同ECU对电源有不同的要求。



一般来讲，有这样3种情况：

1、允许直接断电的ECU，比如座椅模块，IGN off后，可以立马进入休眠节电。

2、断电前需要延时的ECU，比如空调模块，IGN off后，风扇需要继续工作一段时间再进入休眠。

3、需要一直带电的ECU，比如安全防盗模块，不允许休眠，需要一直处于工作状态。



网络管理的功能

网络管理主要负责以下几个功能：

1、保证网络同步进入睡眠状态

2、网络启动后确定网络配置

3、运行过程中监控网络配置

..]]></description><category></category></item><item><title><![CDATA[基于PWM控制的声音播放的实现]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/107122329</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/107122329</guid><author>surui_555</author><pubDate>Sat, 04 Jul 2020 11:53:25 +0800</pubDate><description><![CDATA[1、应用背景



   在现在的电子产品中，客户往往有些对声音提示或者音效反馈的需求，因此需要我们提供能发声的产品方案。现在也有些专门的语音处理芯片，可以由单片机直接控制语音播放，需要播放的声音就直接预先固化在该语音芯片中。但是这种方式有一点的局限性，比如价格较高、声音不能更改编辑。

现在介绍另外一种语音播放方案，直接通过单片机输出的PWM方式播放语音。下面先来介绍一下这种声音播放的原理。



2、语音播放原理

   我们一般采用62.5Khz的PWM信号作为声音载波信号，通过改...]]></description><category></category></item><item><title><![CDATA[Autosar E2E功能安全算法实现]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/106982860</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/106982860</guid><author>surui_555</author><pubDate>Sat, 27 Jun 2020 15:23:23 +0800</pubDate><description><![CDATA[汽车零部件中有很多零件是涉及到功能安全的。比如说方向盘开关，一般都有自动巡航功能。车辆在自动巡航的过程中，制动巡航取消功能失灵是威胁到人生安全的。因此这里一般都需要功能安全设计。但是根据不同的安全等级，产品会有不同安全功能设计。安全等级约高，相关安全功能设计约复杂，安全保障程度也就越高。



   ISO 26262标准中对系统做功能安全设计时，前期重要的一个步骤是对系统进行危害分析和风险评估，识别出系统的危害并且对危害的风险等级——ASIL等级（Automotive Safety...]]></description><category></category></item><item><title><![CDATA[指针的非法释放造成的程序崩溃]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/106979977</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/106979977</guid><author>surui_555</author><pubDate>Sat, 27 Jun 2020 11:11:18 +0800</pubDate><description><![CDATA[在调试上位机的过程中，会遇到程序时常崩溃的问题。debug发现，

程序在运行到这里pDlg-&gt;m_AppBlock.LoadFile(pDlg-&gt;m_strFilePath);，造成的报错弹出。

分析这个函数的包含了指针释放和新建的步骤：

for (ULONGi=0; i&lt;m_AddrNode.m_AddrNodeNum; i++)

 {

 if (m_Block[i].pBlockBuf != NULL)

 {

 delete[] m_B...]]></description><category></category></item><item><title><![CDATA[灰度模板匹配算法]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/51141132</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/51141132</guid><author>surui_555</author><pubDate>Wed, 13 Apr 2016 10:55:49 +0800</pubDate><description><![CDATA[1、介绍
基于灰度的图像匹配算法包括：平均绝对差算法（MAD）、绝对误差和算法（SAD）、误差平方和算法（SSD）、平均误差平方和算法（MSD）、归一化积相关算法（NCC）、序贯相似性算法（SSDA）。

下面介绍其中一种绝对误差和算法（SAD）。
2、绝对误差和算法
绝对误差和算法（Sum
 of Absolute Differences，简称SAD算法）。
设S(x,y)是大小为]]></description><category></category></item><item><title><![CDATA[PMAC上位机编程]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/51023130</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/51023130</guid><author>surui_555</author><pubDate>Thu, 31 Mar 2016 10:54:39 +0800</pubDate><description><![CDATA[1、背景
PMAC是一系列控制卡的简称，常用的有PMAC1、PMAC2、Turbo
 PMAC1、 Turbo PMAC2、UMAC、Clipper等，基本功能和使用方法是一样的。在复杂条件下将预定的控制方案、规划指令转变成期望的机械运动，实现机械运动精确的位置控制、速度控制、加速度(转矩)的控制。PMAC是一系列控制卡的简称，常用的有PMAC1、PMAC2、Turbo
 PMAC1、 Tu]]></description><category></category></item><item><title><![CDATA[MFC文件操作]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50828195</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50828195</guid><author>surui_555</author><pubDate>Tue, 08 Mar 2016 17:21:11 +0800</pubDate><description><![CDATA[1、背景
软件重启如果要保存上次设置的参数，那么就需要用到文件操作。


2、几个常见的问题
1）字符串写入不完整

file.Write(str.GetBuffer(),len*sizeof(TCHAR));
不能直接用sizeof(str)求长度。



2）换行
 换行一般有三种格式:
 “\n" "\r\n" "\r" 用"\r\n"最保险]]></description><category></category></item><item><title><![CDATA[boost库的安装和使用]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50747295</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50747295</guid><author>surui_555</author><pubDate>Fri, 26 Feb 2016 15:52:41 +0800</pubDate><description><![CDATA[1.  介绍
boost是一个准标准库，相当于STL的延续和扩充，它的设计理念和STL比较接近，都是利用泛型让复用达到最大化。
不过对比STL，boost更加实用。STL集中在算法部分，而boost包含了不少工具类，可以完成比较具体的工作。
boost主要包含一下几个大类：字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、
模板元编程、预处理元编程、并]]></description><category></category></item><item><title><![CDATA[auto_ptr应用]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50543649</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50543649</guid><author>surui_555</author><pubDate>Tue, 19 Jan 2016 17:06:41 +0800</pubDate><description><![CDATA[1、智能指针
为什么要使用智能指针？我们知道c++的内存管理是让很多人头疼的事，当我们写一个new语句时，一般就会立即把delete语句直接也写了，但是我们不能避免程序还未执行到delete时就跳转了，或者在函数中没有执行到最后的delete语句就返回了，如果我们不在每一个可能跳转或者返回的语句前释放资源，就会造成内存泄露。使用智能指针可以很大程度上的避免这个问题，因为智能指针就是一个类，当超出]]></description><category></category></item><item><title><![CDATA[控件随窗口大小自动缩放]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50461493</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50461493</guid><author>surui_555</author><pubDate>Tue, 05 Jan 2016 11:59:36 +0800</pubDate><description><![CDATA[1、应用需求
显示器大小不一，应用软件窗口需要根据各种不同的显示器大小显示。
因此需要相关控件随窗口大小自动缩放的功能。


2、在OnInitDialog（）函数中添加如下代码
CRect rect;
GetWindowRect(&rect);
m_listRect.AddTail(rect);//对话框的区域


CWnd* pWnd = GetWindow(GW_CHI]]></description><category></category></item><item><title><![CDATA[MFC对话框界面美化]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50456490</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50456490</guid><author>surui_555</author><pubDate>Mon, 04 Jan 2016 16:26:06 +0800</pubDate><description><![CDATA[1、MFC标准对话框界面
MFC标准对话框界面并不美观，也不符合产品个性化需求，因此需要对对话框界面进行美化。

可以增加如下美化工作：
1）背景贴图
2）控件贴图
3）控件类优化


2、背景贴图
添加消息相应函数OnEraseBkgnd
BOOL CuiDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认]]></description><category></category></item><item><title><![CDATA[VC2010项目打包]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50312799</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50312799</guid><author>surui_555</author><pubDate>Tue, 15 Dec 2015 14:29:38 +0800</pubDate><description><![CDATA[1、选择“新建项目”->“其他项目类型”->"安装和部署"->“Visual Studio Installer”->"安装项目"
命名：智能软件。


2、选择“应用程序文件夹”点右键添加文件，添加需要打包的库文件和执行程序以及中间文件，
添加文件都是已经编译过的应用程序，在debug或者release目录下的所有文件。
其他依赖库也需要在这里添加，比如halconcpp.lib。
]]></description><category></category></item><item><title><![CDATA[VC++中字符串编码的转换]]></title><link>https://blog.youkuaiyun.com/surui_555/article/details/50131681</link><guid>https://blog.youkuaiyun.com/surui_555/article/details/50131681</guid><author>surui_555</author><pubDate>Tue, 01 Dec 2015 16:56:32 +0800</pubDate><description><![CDATA[在以前VC++6.0中默认的字符集是多字节字符集（MBCS：Multi-Byte Character Set），而VS2005及以后默认的字符集是Unicode，这样导致以前在VC6.0中非常简单实用的各类字符操作和函数在VS2010环境下运行时会报各种各样的错误。

字符集可以通过工程属性修改：“工程-属性-字符集”。

CString在Unicode和多字节字符集下的区别：CStrin]]></description><category></category></item></channel></rss>