<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jmmx的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jmmx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jmmx]]></copyright><item><title><![CDATA[国民技术N32G430系列编写的电源控制软件]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/162209040</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/162209040</guid><author>jmmx</author><pubDate>Tue, 23 Jun 2026 10:12:19 +0800</pubDate><description><![CDATA[使用国民技术系列单片机做控制芯片还是很不错的，32位单片机存储和外设资源都很充足，它基本仿照STM32的开发模式，相比STM32价格便宜好多，而且还有丰富的外设使用基础例程，很容易上手。当然要使用更高级的功能，比如数字电源控制、电机控制等需要硬件浮点数运算、三角函数运算及专用DSP指令，它也有相应的芯片。之前使用几款其他的国民技术单片机，在功率大、干扰大的情况下IIC通信都不太理想，所以使用了厂家推荐的430系列，当然401系列抗干扰也是可以的。开发环境：MDK V5.36.00。]]></description><category></category></item><item><title><![CDATA[Adaptive Notch Filter自适应陷波滤波器传递函数离散化后的系数计算]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/158928821</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/158928821</guid><author>jmmx</author><pubDate>Wed, 11 Mar 2026 17:37:22 +0800</pubDate><description><![CDATA[最近在学习TI的PMP23338项目，涉及到了自适应陷波滤波器的使用。。]]></description><category></category></item><item><title><![CDATA[TM1730及HLW8032驱动及项目应用]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/155305257</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/155305257</guid><author>jmmx</author><pubDate>Thu, 27 Nov 2025 11:29:39 +0800</pubDate><description><![CDATA[该项目用于充电桩，属于直通类型，使用继电器来控制充电功能。该项目基本已完成，目前正在老化测试，各种控制逻辑和检测数据都正常，有需要开发此类项目的朋友可以联系我。]]></description><category></category></item><item><title><![CDATA[国民技术N32G003实现PMBus从机及使用STM32F103模拟I2C主机访问从机]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/149960999</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/149960999</guid><author>jmmx</author><pubDate>Wed, 06 Aug 2025 11:26:11 +0800</pubDate><description><![CDATA[1、修改函数PMBusSlave_DecodeCommand，只列出小部分需要的指令并准备好相应的数据，Linear16或Linear11格式，对于一些固定的字符串数据，例如：厂家信息，模块型号等，则直接使用单独的发送缓存并计算好PEC值；1、I2C_Delay()函数我测试过，如果宏DELAY_TIME设置为300，在STM32F103主频72MHz的情况下，函数的延时时间约为71微秒，用逻辑分析仪查看此时的I2C通信速率约为14KHz；]]></description><category></category></item><item><title><![CDATA[TMS320F280049C实现PMBus从机]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/147064622</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/147064622</guid><author>jmmx</author><pubDate>Tue, 08 Apr 2025 15:33:13 +0800</pubDate><description><![CDATA[这次使用的是TI的TMS320F280049C系列，以TI的TIDA-010062设计参考为基础，结合技术手册熟悉相关外设的配置后（最主要就是EPWM、ADC及CMPSS模块），也趁硬件PCB还没有完成，PFC+LLC还不能调试，就开始验证PMBus这一块。实际调试我使用TOOMOSS的USB转I2C设备，故意使用错误的数据长度，不按PMBus规范发送数据，确实会产生这种错误，即使没有产生错误，或者通过I2C主机也可以解决I2C死锁问题，但是为了程序的健壮和可靠，也需要做一些预防措施确保总线的稳定。]]></description><category></category></item><item><title><![CDATA[Microchip AN1477中关于LLC数字补偿器的疑问]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/146387380</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/146387380</guid><author>jmmx</author><pubDate>Thu, 20 Mar 2025 10:28:38 +0800</pubDate><description><![CDATA[最近在学习Microchip的AN1477关于LLC的功率级传递函数推导及数字补偿器设计，对其中的2P2Z数字补偿器的系数有一些困惑。现在把相关有疑问的地方列举出来，也有可能我的理解有错误，到时需要和Microchip的技术支持进行沟通。根据系统从功率级传递函数中获取的主极点信息，两个补偿器零点分别是：ωz1 = -2.050968836111013e+04 + 1.931546679434790e+04i，功率极的零极点分布和补偿器的零极点分别在文档的第21页和第24页。]]></description><category></category></item><item><title><![CDATA[ATmega48 Fast PWM配置]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/144389459</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/144389459</guid><author>jmmx</author><pubDate>Wed, 11 Dec 2024 11:17:39 +0800</pubDate><description><![CDATA[这两个寄存器的定义如下图所示，是用来配置计数和定时的，如果是PWM，则是设置周期，我们根据前面设置的时钟分频是1，系统时钟是11.0592MHz，TCNT1H和TCNT1L合并后的值是0xEA84=60036，则计数值65535-60036=5499后溢出，由此可以计算定时/PWM周期：5499/11059200=0.000497s，换算成频率1/0.000497=2.01K，基本和源程序注释的频率一致。如果设置为000就是定时器/计数器停止工作，初始化时一般会先这样设置。]]></description><category></category></item><item><title><![CDATA[PFC电路相关传递函数及环路补偿的理解]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/144078536</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/144078536</guid><author>jmmx</author><pubDate>Wed, 27 Nov 2024 16:57:53 +0800</pubDate><description><![CDATA[这段时间一直在学习PFC的数字实现，由于是初学，又没有人指导，感觉无从下手，特别是那些传递函数是怎么来的我一直没有搞清楚，零零散散在网上找了很多资料，经过反复学习终于有了点柳暗花明又一村的感觉，把这一点点收获记录下来以供日后自己复习，也让有需要的朋友少走些弯路。以上这些只是在理论方面的理解，实际操作预计肯定还有很多问题，但只要愿意学习没有解决不了的问题。PI控制器的形式如下图所示，我们上面求出的Gca实际相当于PI控制中的P值，即Kp。或者将原来的传递函数中分母2去掉也是一样的，这样就可以理解了。]]></description><category></category></item><item><title><![CDATA[SPLL单相软件锁相环相关源代码理解-SOGI及PI系数计算]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/140181234</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/140181234</guid><author>jmmx</author><pubDate>Fri, 05 Jul 2024 11:19:58 +0800</pubDate><description><![CDATA[SPLL单相软件锁相环相关源代码理解-SOGI及PI系数计算]]></description><category></category></item><item><title><![CDATA[STM32快速复制MX25L1606E系列Flash]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/135592669</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/135592669</guid><author>jmmx</author><pubDate>Mon, 15 Jan 2024 10:17:34 +0800</pubDate><description><![CDATA[生产部门表达了不满，我本想给他们解释原因，但后来想与其和一些不懂技术的人瞎争论、浪费时间，还不如想点实际的办法。2、擦除MX25L1606E上的相关块和扇区，比如：本程序一个扇区用于保存事先计算好的校验和及总的升级包长度，一个块用于存储实际的新的升级固件，一个块用于保存旧的在ROM中运行的程序。3、根据客户软件协议要求，RS485通信需要将一个字节拆分成两个字节进行传输，例如：如果要发送0xAB，则会拆分成0x3A和0x3B两个字节，接收处理程序再将这两个字节合并成0xAB，这无疑使数据的传输时间加倍；]]></description><category></category></item><item><title><![CDATA[DALI1.0学习——BIT解码]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/134813758</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/134813758</guid><author>jmmx</author><pubDate>Wed, 06 Dec 2023 14:41:58 +0800</pubDate><description><![CDATA[那我们来看一下当接收地址和数据的BIT时，bit_index_temp是不是奇数并且对应的BIT是否正确，如图4所示，当起始位的上升沿产生后bit_index_temp被设置为1，然后从。根据边沿跳变触发时间将bit_index_temp加2或者加1，我们可以看到bit_index_temp确实是在每次为奇数时才读取接收到的BIT，为节省空间在图中我把bit_index_temp改为了bit_idx。是解码接收到的BIT值并赋值给地址变量dali_rec_addr和数据变量dali_rec_data。]]></description><category></category></item><item><title><![CDATA[Y-MODEM协议定制上位机]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/134595432</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/134595432</guid><author>jmmx</author><pubDate>Fri, 24 Nov 2023 14:45:07 +0800</pubDate><description><![CDATA[刚开始也不知道从哪里下手比较好，刚好我手边有个逻辑分析仪，之前我就是用它抓取了PIC18F45K80官方程序UnifiedHost-1.19.0使用Ymodem协议和RS485发送给单片机的升级程序内容才成功制作了升级文件。单片机上的软件已经完成了，一般是使用secureCRT这样的工具作为上位机，后来想自己做一个定制化的简单的上位机。证明单片机接收文件有问题，我试着运行新程序，果然没有成功。于我抓取了secureCRT和本程序发送的数据，经过对比发现是第一帧数据不同，就是文件名称和长度这个数据包。]]></description><category></category></item><item><title><![CDATA[国民技术Cortex-M0系列单片机IAP升级]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/134469252</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/134469252</guid><author>jmmx</author><pubDate>Fri, 17 Nov 2023 20:06:37 +0800</pubDate><description><![CDATA[使用野火的STM32开发实测过是没有问题的，于是在它的基础上进行修改，移植到N32G031系列单片机中来，经过一番折腾还是弄好了，现在把相关内容分享下，另外资源可以在以下链接中下载，无需积分。考虑到设备部署到现场后有可能需要进行软件升级，之前做过PIC系列单片机的升级，现在想做个国民技术N32G031系列Cortex-M0内核的单片机IAP方案。其实也很简单，主要就是串口和RS485相关引脚的初始化，串口这里没有使用中断的方法。相关外设初始化完成后就会进入主菜单，根据用户输入的值进行不同的操作。]]></description><category></category></item><item><title><![CDATA[国民技术N32G031系列Flash数据存储]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/134209304</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/134209304</guid><author>jmmx</author><pubDate>Fri, 03 Nov 2023 20:17:11 +0800</pubDate><description><![CDATA[3、初始时从Flash页的指定位置读取数据（位置根据计算得到，就是找到第一个连续4个0xFF的位置），并存储在两个变量中A和B中，此时A和B中保存的数据是相同的，运行时如果上位机执行了导通和断开操作会改变B变量相关成员值，当while大循环检测到A和B的值不同时，则用B的值设置A变量，并根据计算的地址写入Flash页中。Flash每页有512个字节，每4个字节写一次，则一页可以写入128次，整页写完，继续再写时才擦除页，重新从页的起始位置写入数据，如此反复，这样可以大大减小Flash页的擦除次数；]]></description><category></category></item><item><title><![CDATA[中微CMS8S3680/69xx系列单片机]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/134125590</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/134125590</guid><author>jmmx</author><pubDate>Mon, 30 Oct 2023 19:37:00 +0800</pubDate><description><![CDATA[另外它的存储器资源也是很丰富的，16K字节ROM，256字节RAM以及512字节的XRAM，对于一般的程序是绰绰有余了。4、demo_adc.c：主要是ADC检测及NTC贴片电阻不同阻值下对应的AD值表，然后程序根据AD值表获取相应的温度信息。AD取样每两毫秒进行一次，12V输出电压共检测16次，温度值检测共8次，然后取平均值。12V /53V输出异常出高（电源风扇异常、输出过压、输出限流、输出短路、电源过温保护）输出＞13V，4脚出高（打嗝保护）（3V保护，2.8V恢复正常）]]></description><category></category></item><item><title><![CDATA[国民技术N32G031系列单片机编程]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/133898564</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/133898564</guid><author>jmmx</author><pubDate>Wed, 18 Oct 2023 09:49:59 +0800</pubDate><description><![CDATA[最近使用国民技术N32G031系列单片机的项目较多，功能较为简单，写这篇文章主要是为自己的学习做个总结。3、使用UART/RS485接口供主机读取各种电源及8路输出的通断控制。2、使用I2C接口作为从机供主机读取各种电源状态及8路输出的通断控制；好的，其他的不多说，直接上源代码。1、控制电源8路输出；]]></description><category></category></item><item><title><![CDATA[PIC12F510作为PMBus主机]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/133858991</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/133858991</guid><author>jmmx</author><pubDate>Mon, 16 Oct 2023 16:06:26 +0800</pubDate><description><![CDATA[根据公式：Voltage = V * 2^N，这其中V就是我们需要设置的值，查模块手册，N = -9，以设置45V输出电压为例：45 = V * 2^-9，求得V = 23040，也就是我们发送给模块的值。风险的提示，这个之前没有遇到过，为了避免这个潜在的风险，有些地方我直接去掉函数调用而直接将代码写到一个函数里，虽然结构看起来乱一些，但项目小，没有必要搞到那么层次清楚。用于发送模块调压指令，但由于有硬件堆栈溢出风险，故没有单独写成函数，而是直接将里面的代码放在了需要的地方；//将SDA恢复为输出模式。]]></description><category></category></item><item><title><![CDATA[国民技术N32G031系列单片机的AD采样]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/133162417</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/133162417</guid><author>jmmx</author><pubDate>Fri, 22 Sep 2023 12:01:52 +0800</pubDate><description><![CDATA[用过一段时间的国民技术N32G031系列单片机，编程模式几乎类同STM32系列（另外一个国产单片机品牌兆易创新好像也是仿STM32的编程模式，看来STM32的确是一款极其优秀的产品），但是价格实惠，功能也很齐全，软件支持包在官网都可以下载，所以总体感觉还是不错的。]]></description><category></category></item><item><title><![CDATA[PIC16F18323电源控制软件]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/133066294</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/133066294</guid><author>jmmx</author><pubDate>Wed, 20 Sep 2023 10:47:27 +0800</pubDate><description><![CDATA[输入欠压恢复：此脚电压≥1.67V（对应输入35V），7脚输出高电平（开继电器），延时100mS后，5、9脚同时输出低电平（开-12V、+12V），再延时100mS，8脚输出低电平（开50V），6脚输出高电平（输入告警解除）；输入过压恢复：此脚电压≤3.57V（对应输入75V），7脚输出高电平（开继电器），延时100mS后，5、9脚同时输出低电平（开-12V、+12V），再延时100mS，8脚输出低电平（开50V），6脚输出高电平（输入告警解除）。开环保护模式：-12V开40mS，关3S，打嗝模式。]]></description><category></category></item><item><title><![CDATA[STM32实现PMBus从机程序]]></title><link>https://blog.youkuaiyun.com/jmmx/article/details/133039123</link><guid>https://blog.youkuaiyun.com/jmmx/article/details/133039123</guid><author>jmmx</author><pubDate>Tue, 19 Sep 2023 20:08:55 +0800</pubDate><description><![CDATA[另外我还参考了德州仪器的一篇基于TMS320F2803x系列单片机PMBus协议的实现，包括主机和从机程序（源程序和文档下载地址：http://www.ti.com/lit/zip/SPRABJ6，文档的截图如下）。]]></description><category></category></item></channel></rss>