- 博客(203)
- 资源 (14)
- 收藏
- 关注
原创 电机基础之-BJT&MOSFET原理
本文比较了BJT(双极结型晶体管)与MOSFET(金属-氧化物半导体场效应晶体管)的工作原理和特性。BJT是电流控制器件,通过基极电流控制集电极电流,存在导通压降和功耗问题;而MOSFET是电压控制器件,通过栅极电压形成导电沟道,具有高输入阻抗和低功耗优势。重点分析了MOSFET的预夹断现象:当Vds增大使漏端沟道消失时进入饱和区,这对模拟放大器有益(提供高增益),但在开关应用中会增大损耗。两者各具特点,BJT适用于线性放大,MOSFET则在数字电路和开关电源中占据主导地位。
2025-11-16 11:49:27
1182
原创 pwm输入捕获最大最小频率计算
在100kHz采样时钟下: 最大PWM频率:理论极限50kHz(易混叠),实际建议≤10kHz以保证可靠测量; 最小PWM频率:无理论下限,实际由采样时长决定(如1秒采样可测至1Hz)。 关键限制:奈奎斯特定理(最大频率)、采样时长与缓冲区(最小频率)。若需精确占空比测量或处理极端占空比,建议进一步降低最大频率至1-5kHz。
2025-11-16 11:47:42
558
原创 autosar 中OS模块理解
在 DaVinci Configurator 中,OS 模块(Operating System Module)是用于配置 AUTOSAR 操作系统(OS)的核心模块。Os.c:包含任务、中断、资源、事件等的实现。Os_Cfg.h:包含 OS。创建任务并配置其属性,如优先级、栈大小、激活策略(AUTOSTART、STARTUP)等。Schedule:任务的调度策略(如 FULL、NON)。Action:定时器触发时的动作(如激活任务、设置事件)。Priority:任务的优先级(数值越小,优先级越高)。
2025-09-21 16:26:35
999
原创 autosar 中使用os自带错误检测函数【hook以及handing】函数进行系统问题排查定位
该错误表明任务的激活次数已超出最大限制。除了错误处理以外,AUTOSAR OS还提供了其他类型的Hook,比如PreTaskHook和PostTaskHook,用户可以在Hook中放入监控逻辑,以实现任务追踪。这些钩子函数都具有操作系统相同的访问权限,也就是内核访问权限,因此代码逻辑要非常谨慎,尤其是ProtectionHook,会在Trap场景下调用,注意临界区的数据相关保护。在AUTOSAR架构中,发生保护错误时,操作系统会调用用户定义的保护钩子(Protection Hook)来通知运行时错误。
2025-09-21 16:24:54
1041
原创 autosar中自旋锁和互斥锁的应用
多核系统中共享资源访问的同步机制 摘要:在多核系统中,当多个任务需要访问共享资源时,必须采用适当的同步机制。经典模式是嵌套锁(Nested Locking),即先获取资源锁(核内同步)再获取自旋锁(核间同步),顺序至关重要以避免死锁。自旋锁适用于短临界区和不可睡眠环境,通过忙等待实现;互斥锁则适用于长临界区,会主动让出CPU。在底层驱动中,若多个核的任务同时调用带锁的函数,未正确同步会导致阻塞、死锁或数据竞争。关键原则是:锁不属于特定核,但同一时间只能被一个执行单元持有;应严格配对锁操作,避免在临界区执行耗
2025-09-21 14:42:59
995
原创 davici configurator 报错:License file of SIP has no valid checksum.
背景:sip放在git仓库上之后直接拉取代码仓库打开工程保报错。在git中进行配置一下命令之后再重新拉取工程打开就好。原因,拉取下来之后被修改了密钥。
2025-08-13 22:05:52
493
原创 greenhills编译出错问题
此外,用户可能需要联系系统管理员确认许可证的分配情况,是否有足够的许可证可用,或者许可证是否已过期。另外,许可证目录指向C:\ghs\licenses,但不确定这里是否有有效的许可证文件存在。> 嗯,用户在使用Green Hills工具编译时遇到了许可证错误,具体是找不到enable_COMPILER_2022_1的许可证,而且License Manager无法联系。> 1. 确认许可证文件是否正确安装,检查许可证目录下是否有有效的.lic文件,并确保其内容正确,特别是服务器地址和端口是否正确。
2025-07-26 21:37:10
1056
原创 systemtick使用详解章
下面我将详细解释如何配置 SysTick 定时器为 1ms 中断,并提供完整的实现代码。在时间比较中,使用 (current_time - last_feed_time) >= interval 可以正确处理溢出。中断优先级:SysTick 通常具有可配置的中断优先级,确保它不会被其他中断长时间阻塞。106MHz 下,system_tick 每 1ms 增加 106,000。确保在调用 Get_Current_Tick() 前已初始化。先初始化 SysTick,再启用全局中断。
2025-07-26 21:36:01
429
原创 采用命令行编译ds32工程出现错误:Managed Build system manifest file error: Unable to resolve the superClass identif
编译命令:出现错误:解决方式:找到ds的安装目录C:\NXP\S32DS.3.4\eclipse\plugins,删除掉带ghs的jar文件【记得备份】再次运行解决:期间尝试过的失败操作:根据您描述的问题,错误提示涉及对GHS工具链的引用,但您的工程配置明确使用GCC。以下是逐步排查和解决该问题的建议:步骤:关键点:问题:解决:确保无 或类似变量存在。5. 启用详细日志步骤:修改构建命令,添加日志参数:检查输出日志中更早的警告或错误,可能揭示GHS引用的根源。
2025-05-30 13:31:18
869
原创 互容触摸芯片和自容触摸芯片之间的原理区别以及优缺点?
互容触摸芯片和自容触摸芯片是两种常见的电容式触摸传感技术,它们的原理和特点有所不同,适用于不同的应用场景。互容式和自容式触摸芯片在市场上均有广泛应用,以下是两类芯片的主要代表型号及其特点。
2025-05-30 13:29:47
1882
原创 can 通信异常原因分析以及排查
总线关闭(Bus-Off):节点因持续错误(如硬件故障、干扰)进入“Bus-Off”状态,完全停止收发报文。节点供电失效:某个节点电源中断,可能引发该节点持续发送错误帧(如“总线关闭”状态),阻塞整个网络。过滤器全屏蔽:节点过滤器设置错误,拒绝接收所有报文,可能间接导致发送逻辑异常(依赖反馈的协议)。总线短路/断路:CAN-H和CAN-L之间短路、对电源/地短路,或线缆断裂,导致信号无法传输。收发器损坏:节点CAN收发器故障(如电源反接、过压),导致无法发送或接收信号。
2025-05-30 13:29:18
3672
原创 canoe 排查配置相关【graphics,capl】
测量结束后,右键点击图形窗口,选择 **Export Data,将数据导出为 .csv或.mat` 格式。在 Graphic Window 中,右键点击选择 Add Signal 或 Add Variable。或通过菜单栏:Panel > Graphic > New Graphic Window。右键点击空白区域,选择 Insert Graphic Window(插入图形窗口)。右键点击信号曲线,选择 Properties,调整颜色、线型、坐标范围等。在同一窗口中可添加多个信号,支持对比分析。
2025-05-30 13:28:39
849
原创 canoe 利用log进行故障重现方式
本文详细介绍了如何在CANoe中使用Replay模块重放日志文件。首先,确保日志文件有效且工程配置与记录环境一致。接着,通过添加Replay Block并关联日志文件,配置时间戳模式和过滤规则(可选)。启动重放后,可进行高级配置,如循环重放、速率控制和触发条件。注意事项包括硬件通道匹配、数据库兼容性和时间戳同步。常见问题如报文未发出或时间戳错乱,可通过检查配置和调整时间戳模式解决。若需过滤特定报文,可添加过滤模块并设置pass filter。通过以上步骤,可实现高效的日志重放和场景复现。
2025-04-23 15:43:17
633
原创 git 撤销某次提交的上交到远程服务器的commit提交,此提交后面的commit需要保留【deeepseek生成】
核心思路 使用 git rebase -i 重写提交历史,删除目标提交后强制推送到远程(需谨慎操作)。
2025-03-12 15:51:45
542
原创 arm内核寄存器错误定位技巧【持续更新】
CPSR:在ARM架构中,CPSR(Current Program Status Register) 的 模式位(Mode bits) 决定了处理器的当前运行模式。以下是关于CPSR模式和寄存器权限的详细说明:通用寄存器【ARMv7】:ARM处理器的通用寄存器(General-Purpose Registers,GPRs)是程序执行过程中最常用的寄存器,用于存储临时数据、地址和中间计算结果。通用寄存器(R0-R15)User模式:只能访问 R0-R14 和 PC(R15),无法直接访问 CPSR。
2025-03-12 15:50:21
1547
原创 DS32编译优化问题【deepseek的功劳】
在嵌入式开发中,优化选项 -O3 和 -Os 的行为差异可能导致代码出现不同表现。如果代码在 -O3 优化下运行正常,但在 -Os 优化下异常,通常与编译器的优化策略和代码本身的实现方式有关。例如:未初始化变量、数组越界、野指针、数据竞争等。现象:-Os 会删除它认为“无用”的代码(如未显式调用的函数、冗余操作),而 -O3 可能保留。现象:代码依赖特定时序(如硬件寄存器轮询)或内存访问顺序,-Os 的优化可能破坏这些依赖。进行简单的优化(如删除未使用的代码、合并常量),在代码大小和执行速度间平衡。
2025-02-28 20:49:43
1216
1
原创 Vscode的通义灵码占用空间过大问题【.lingma】
最后排查发现是一个.lingma的文件夹问题,这个文件夹用了我居然差不多一百G的空间,windows+I 打开系统设置,搜索存储:打开存储设置。删除掉ai训练时产生的dbc文件就好了,C盘空间发现没装几个软件但是空间占用太离谱了,里面的.dbc文件删掉,空间立马出来了。
2025-02-26 21:41:06
2852
原创 在s32ds for platform平台debug编译能正常编译,但是切换到release编译时报错
预定义宏 :在C/C++ Build > Settings > Tool Settings > Preprocessor中,查看是否Release定义了额外宏(如NDEBUG),可能影响条件编译。在S32DS for Platform中出现Release模式编译错误但Debug模式正常的问题,通常与编译配置差异或预处理宏相关。若项目复杂,逐步移除代码模块,定位引发错误的具体文件。查看编译器输出的具体错误位置(文件名和行号),检查该行及之前的代码是否存在语法问题,如缺少分号、括号不匹配或宏展开异常。
2025-02-21 19:54:12
536
原创 VSCode 中设置 Git 忽略仅因时间戳修改导致的文件变更【使用deepseek生成的一篇文章】
推荐方案 :优先通过 .gitattributes 自定义 Diff 规则,精准忽略时间戳行。临时方案 :对无需提交的文件使用 git update-index --skip-worktree。长期方案 :优化生成工具配置,避免无关时间戳变更。
2025-02-20 15:11:50
1105
原创 freemaster出现错误:could not instantiate communication plugin object
当我使用这个工具进行设备设置时老是出现无法无法注册的情况并弹出弹框提示:could not instantiate communication plugin object,在freemaster的安装目录下找到D:\freemaster\FreeMASTER:register.bat。
2025-01-21 16:11:44
349
原创 can协议中的网络管理
网络管理最终要实现的是车上的ECU能够协同睡眠以及唤醒,也就是说网络管理最重要的一点是要保证车上的ECU能够协同唤醒和休眠。那么假如车上的ECU都处于睡眠模式,网络上都没有报文,你咋实现唤醒呢,其实,一般不会让所有的ECU都处于睡眠模式,这个时候可能会有极少的ECU处于工作状态,比如车上的BCM。也就是说有一些ECU是通过KL15直接唤醒的,而有些是通过CAN报文唤醒。当然或许后面会升级到更加节能的模块,可以不需要钥匙信号,这些模块在睡眠状态时,耗能非常少,因此可以一直处于可唤醒状态。
2024-12-11 21:53:15
1505
原创 candb++ canfd 报文信号报警告“Enter an integer between 1 and 64”问题
按照canfd的协议规定,最长可支持到64byte。这个配置的是512bit,刚好是64byte,但是candb++老是报警告:Enter an integer between 1 and 64。
2024-12-11 11:50:19
607
原创 关于S32DS平台使用pe仿真报错“An internal error occurred during: “Start GDB Semihosting Job“.
An internal error occurred during: "Start GDB Semihosting Job".
2024-10-22 11:21:21
681
1
原创 基于s32ds平台指定变量储存位置
打开ld文件配置一段ram空间定义一个变量并将变量指定在段中编译并查看map文件变量存储位置我们可以看到变量已经存放在我们指定的地址空间段了。自此结束。
2024-10-11 08:48:11
701
1
原创 canoe无法发出连续帧
请检查ECU回复流控帧与CANoe发出的首帧之间时间间隔是否大于N_Bs timeout,一般该参数值为1000ms,您可以查询cdd中具体定义数值,若大于此值则CANoe会因为超时而不发送后续连续帧。在一个工程中,我们既有can的报文又有canfd的报文,然后再诊断测试中发现,canoe在接收到流控帧的时候并没有转发相关的连续帧就停止服务。造成这种原因还有另外一个原因就是流控帧的回复速度问题,我设置了1秒,这里回复是在4ms左右,所以不是这个问题。frame types]选为[accept]
2024-09-20 14:30:08
1921
原创 关于geny工程导入cdd之后莫名卡死的问题解决
问题是这样子的,拿了一个新的geny工程,需要更换cdd,结果发现一导入cdd文件就莫名卡死,现象是下面这样子的,排查以为是candelastudio的问题,但是我这边安装的是21版本的,能打开不卡死的同事安装的是20版本的,后面发现是另外一个插件的问题,直接转圈圈,任何提示都没有,最终通过安装这个插件解决。
2024-09-11 08:43:02
422
原创 EB Tresos 基于S32K3芯片 ICU模块实现gpio外部中断配置[后续更新实现icu模块的其他功能]
选择一个具有erq功能的引脚并配置为erq功能。环境:eb tresos 27.0.1。在这个模块中配置中断的开关以及中断句柄。配置中断产生方式以及回调函数。将中断对应的通道中断开启。
2024-07-27 13:55:33
1020
2
原创 git实践汇总【配置+日常使用+问题解决】
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jItysh9p-1721871286097)(https://i-blog.csdnimg.cn/blog_migrate/b2bdd5d0cde34001573cb0c2a753764b.png)]使用命令:git commit --amend,进入命令模式,这是按 a或者i或者o进入编辑模式,我们修改好commit信息后按Esc健退出编辑模式,然后:wq保存我们编辑的信息。拉取完之后三件套:【确保当前代码最新状态】
2024-07-25 09:39:13
448
原创 iso 标准的canfd通信问题【基于S32K3系列芯片】
为了避免误解,CiA建议使用术语“ISO CAN FD”和“non-ISO CAN FD”。执行博世(BOSCH)原始CAN FD协议的产品应命名为“non-ISO CAN FD”,在这个过度阶段的产品主要目的是用于前期评估和开发,将来所有产品都将符合ISO标准。CAN-FD仅定义了数据帧,与传统CAN相比,取消了远程帧的支持。原因是在没有数据的情况下,远程帧没有必要改变数据段的比特率。通过配置之后canfd一直和canoe通信无法成功,直到canoe的设置变为non isocanfd之后可以通信,
2024-07-19 18:24:22
766
原创 s32k314【入门新手篇】-开发环境安装【ds32开发平台】
登录nxp官网下载:https://www.nxp.com/以上三步请先注册好并登录你的个人账号。点击一下软件运行,选择工作空间。然后输入关键字:S32 查看。弹出什么就安装什么就好了。
2024-06-04 20:44:14
1150
原创 巧用断点设置查找bug【debug】
全速运行,可以看到当DelayTimer的值为20的时候,MCU停在了断点处,再 次全速运行,MCU将不会停下来。型,当代码运行到断点处,MCU不会Halt,可以通过Debugger Console查看。也可以在Outline,选中变量,然后鼠标右键,在弹出的菜单里选择Toggle。默认设置的断点,当代码运行到断点处MCU就会被挂起,从而停在断点处。是某个变量被设置为某个值,也可以是外设某个状态位置位,也可以是它们的。于软件庞大,调用关系复杂,变量多处访问,在调试这种问题是,通常做法是。
2024-04-20 15:42:53
803
原创 S32DS平台上使用DWT模块进行代码时间计算和利用脚本文件进行问题定位
DWT(Data Watchpoint And Trace Unit),是 ARM Cortex M 系列内核(ARMCortex-M V7(K1 M4F, K3, M7))提供的数据监测点和跟踪单元,以支持数据断点功能。。CYCCNT 是一个 32BIT 的 UP计数器,记录内核时钟的运行个数,内核时钟跳动一次,改计数器就加 1,对K3X4 内核时钟最高 160M,每个时钟节拍周期是 6.25ns,最长能记录 26.84S。
2024-04-19 17:29:35
1080
原创 十大经典算法【C实现】
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。算法实现:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽量增大桶的数量,使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中……
2024-04-04 12:39:14
1151
原创 LIN协议的那些事【入门以及配置】
全称为Local Interconnect Network,是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议,应用了单主机多从机的概念,总线电平一般为12V,传输速率最高限制为20kbps。由于物理层的限制,一个LIN网络最多可以连接16个节点,最长总线长度为40米。对于不需要像动力系统和底盘系统那样的速率和可靠性的传感器和执行器,即车身系统,可以采用LIN来构筑简单、低成本的局域网络,适用范围包括车窗、座椅、天窗、门锁、空调、照明等舒适性相关的领域。
2024-03-31 18:10:32
10148
2
UartComdll.rar
2020-08-03
ili9341背光pwm控制.rar
2020-09-28
F103指南者版本.rar
2020-09-04
字模版tftSTM32F103ZET6_Hardware_SPI.rar
2020-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅