自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 状态流支持的状态和转换操作类型

在event_name上,操作前面是前缀On,后面是唯一的事件event_name,后面是一个或多个操作。)或逗号(,)分隔多个操作。Entry 操作前面是前缀Entry,简称en,后面是必需的冒号(:),后面是一个或多个操作。在“转换操作类型”中的示例中,从状态A到状态C的转换具有条件操作func1(),这是一个函数调用。退出操作前面是前缀Exit或ex,简称Exit,后面是必需的冒号(:),后面是一个或多个操作。在“转换操作类型”中的示例中,从状态A到状态B的转换具有转换操作data1=5。

2024-02-03 16:54:02 894

原创 事件在状态流程图中的工作方式

事件是一个Stateflow®对象,它可以触发以下对象中一个动作:Simulink®触发子系统Simulink函数调用子系统状态流程图。

2024-02-03 14:57:35 713

原创 使用输出事件激活Simulink块

什么是输出事件?输出事件是发生在Stateflow®图表中,但在图表外的Simulink®块中可见的事件。这种类型的事件允许图表将图表中发生的事件通知模型中的其他块。您可以使用输出事件来激活同一模型中的其他块。您可以在图表中定义多个输出事件,其中每个输出事件映射到一个输出端口。注意:输出事件必须是标量。

2024-02-03 09:37:31 925

原创 simulink之数据字典

2.在“Model Properties ”对话框中,设置Defined in to Data Dictionary ,然后单击“new”创建数据字典。数据字典是模型使用的全局设计数据的持久存储库。然而,数据字典提供了更多功能。1.全局设计数据:包含定义参数、信号的设计数据,以及定义模型行为的其他数据。在字典中创建或导入的数据存储在该部分中。字典只存储定义参数和信号的设计数据,并包括定义模型行为的数据。此示例显示如何将模型链接到数据字典,并将模型设计数据从base workspace导入数据字典。

2024-01-23 13:16:19 637

原创 Simulink之Signal

为了防止出现错误,请决定信号要使用哪个对象,然后删除或重新配置对任何其他信号对象的所有引用,以便所有剩余引用解析为所选信号对象。信号可以多次引用信号对象,但每个引用都必须解析为完全相同的信号对象。如果信号对象的存储类为Auto,则可以将给定的信号对象与多个信号相关联。当更新图表或开始模拟时,如果信号的初始值大于最大值,或者最大值在信号的数据类型范围之外,Simulink会产生错误。当更新图表或开始模拟时,如果信号的初始值小于最小值,或者最小值超出信号数据类型的范围,Simulink会产生错误。

2024-01-22 15:33:53 987

原创 simulink之Default Transitions

默认转换指定当两个或多个相邻的异或状态之间存在歧义时要进入哪个异或状态。默认转换有一个目标,但没有源对象。例如,默认转换指定在没有任何其他信息(如历史连接)的情况下,系统默认进入具有异或(OR)分解的超级状态的哪个子状态。默认转换也可以指定默认情况下应输入连接。

2024-01-19 18:26:54 375

原创 状态流之Transition Connections

如果[c1>0]为true,则向A1的转换是有效的。如果[c2>0]为真,则向A2的转换是有效的。如果[c1>0]和[c2>0]都不为真,则向A3的转换是有效的。如果[c2>0]为真,则向A2的转换是有效的。如果[c1>0]和[c2>0]都不为真,则向A3的转换是有效的。A1、A2和A3之间的转换由E、[c1>0]和[c2>0]确定。注意:当使用到连接结点的内部转换时,活动子状态可以退出,并在该子状态的转换条件有效时重新进入。例如,如果子状态A1是活动的并且[c1>0]为真,则向A1的转换是有效的。

2024-01-19 17:28:54 864

原创 使用条件操作执行控制图

1.chart根检查E_one的结果是否存在有效的转换。检测到从状态A到状态B的有效转换。在有效转换上检测到条件动作A_one,并立即执行和完成。指示与条件动作广播事件相同的事件的触发器的转换标签导致不可恢复的循环行为。1.图表根检查E_one的结果是否存在有效的转换。在有效转换段上检测到条件动作A_one,并立即执行和完成。3.在有效转换上检测到事件E_one,并立即执行。2.由于到可能目的地的转换段上的条件为假,因此没有一个完整的转换是有效的。1.图表根检查E_one的结果是否存在有效的转换。

2024-01-19 16:57:30 347

原创 用MATLAB函数在图表中建立模型

meanstats计算平均值,stdevstats计算vals中值的标准偏差,并将它们分别输出到Stateflow数据平均值和stdev。函数length是代码生成所支持的内置MATLAB函数的一个示例。当您构建模拟目标时,函数长度是用生成的C代码实现的。当MATLAB函数遇到外部函数时,它会将调用发送到MATLAB工作空间,以便在模拟过程中执行。注意:对于只有一个返回值的MATLAB函数,可以省略签名标签中的括号。9.双击“Size”列下的vals行,将vals的大小设置为4。

2024-01-19 16:38:38 671

原创 simulink使用模式向导创建流程图

选择一个decision 模式或loop模式后,模式向导会将新模式沿着转换路径放置在动作下方。当您选择Chart > Add Pattern in Chart > Custom时,保存在此文件夹中的模式将显示在下拉列表中。如果您的选择不符合条件,当您选择 Chart > Insert Pattern on Selection时,您会看到一条Message,而不是模式选项。使用模式向导,您可以将流程图模式保存在中心位置,然后在Stateflow图形函数和图表中轻松检索和重用它们。该模式将显示在图表中。

2024-01-19 13:30:50 911

原创 状态流之Transitions

在大多数情况下,当转换的源状态为活动且转换标签有效时,转换是有效的。默认转换到子状态的有效性是在转换到其超级状态时评估的,假设超级状态是活动的。但是,状态包含转换。在前面的示例中,如果条件[off_count==0]为true,并且目标状态off有效,则执行转换动作Light_off。在前面的示例中,条件[off_count==0]必须计算为true,才能执行条件操作,才能使从源到目标的转换有效。在前面的例子中,只要条件[Off_count==0]为true,事件E的广播就会触发从On到Off的转换.

2024-01-17 16:53:14 931

原创 simulink之state

既不是另一个状态的超级状态也不是另一状态的子状态的状态是其父状态是状态流程图本身的状态。Stateflow层次结构中的名称是作为状态标签输入的文本,前面是用句点分隔的父状态的名称。每个状态(或图表)都有一个分解,它规定了状态(或表格)可以包含什么类型的子状态。在另一个状态的边界内绘制一个状态表示内部状态是外部状态(或超级状态)的子状态(或子状态)。当状态C变为激活时,状态C1或状态C2可以是激活的。在以下示例中,状态A或状态B都可以是激活的。如果状态A是激活的,则状态A1或状态A2可以在给定时间是激活的。

2024-01-16 14:05:30 870

原创 simulink之Data Type Conversion

数据类型转换块将任何Simulink®数据类型的输入信号转换为您为输出数据类型参数指定的数据类型。如果输入是真实的,那么输出就是真实的。如果输入是复杂的,那么输出就是复杂的。Q的值直接用于产生输出。在这种模式下,输入和输出是相同的,只是输入是一个缺乏适当缩放信息的原始整数。输入为常数100时,二进制输出结果为01100100,经转换后输出结果为100*(1/8)=12.5.当输入为101时,二进制输出结果为01100101,经转换后输出为12.625.例如,模型的一部分可能涉及模拟产生整数作为输出的硬件。

2024-01-15 14:15:22 559

原创 simulink之Fixed-Point Numbers

软件不会根据存储的整数Q的字长来限制指数E的值。因为分数长度比单词长度长2位,所以存储的整数的二进制值是x.xx00000101,其中x是隐式零的占位符。定点数及其数据类型的特征在于它们的字大小(以位为单位)、二进制点以及它们是有符号的还是无符号的。使用定点设计器软件,您可以选择由其二进制点定义缩放比例的定点数据类型,也可以选择适合您需要的任意线性缩放比例。计算机硬件通常以三种不同的方式表示二进制定点数的否定:符号、一的补码和二的补码。二的补码是有符号定点数的首选表示形式,并受定点设计器软件的支持。

2024-01-15 11:10:01 1045

原创 simulink之parameter

我目前知道有两种方法,一种可以在matlab命令行定义,如果要定义一个名为abc的Parameter,那么在命令行输入 abc = Simulink.Parameter,然后就会自动生成一个abc的Parameter,这样在右边的工作区就可以看到abc的 Simulink.Parameter已经生成。您可以使用Simulink.Parameter的“参数”对话框定义Simulink.Parameter对象。通过参数对象,不仅可以指定参数的值,还可以指定参数的其他信息,例如参数的用途、尺寸或最小值和最大值。

2024-01-12 13:30:14 596

原创 simulink merge模块

如果使用“模型配置参数”>“诊断”>“未指定初始化检测参数”的默认设置“经典”,则不要将输入到merge块的信号分支。对于Merge块的每个输入,最上面的非原子和非虚拟源必须是有条件执行的子系统,而不是迭代子系统。始终设置merge块的初始输出参数,除非merge块的输出端口连接到另一个merge块。以下示意图显示了有效的Merge块使用,合并来自两个有条件执行的子系统的信号。Merge块无法连接到正弦波块,因为正弦波块不是有条件执行的子系统。不要将Merge块的多个输入连接到同一个有条件执行的子系统。

2024-01-11 12:53:59 1157

原创 simulink if 模块用法

这个模块与 If Action Subsystem模块一起用,可完全替代c语言if else语句。number of inputs-指定输入端口个数,用于if else中判断的变量。当u1>0,u2>0的时候,满足u1>0条件,输出为1,下面条件则不进行判断。然后将要判断的逻辑按格式填写,然后按填写顺序执行程序。

2024-01-04 14:57:40 891

原创 simulink switch case用法

下图中我选了三个case,当输入u1为1时,对应第一个case,输出为8.当u1=-1,不满足所有case时,输出为default值为9.这个模块是可以完全替代C语言switch case的。基本可实现C语言switch case所有功能。case子系统没有做任何改变,默认输入=输出。u1 — case 选择的值。实现类C开关控制流程语句。

2024-01-04 13:59:45 584

原创 Switch以及multiport switch用法

data port order选择的是one-base contiguous,我们也可以选择更符合编程习惯的zero-base contiguous,这样的话控制输入为0时对应的是第一个port的值。当控制输入口为一个不合法的值-8时,则跳转到默认输出口,此时这个default口对应的是port3. 当然我们也可以在设置中修改defaut口。第一个输入是控制输入,而其他输入是数据输入。一共有三个输入端口,第一个和第三个是数据输入口,第二个是控制信号输入口,控制信号的阈值可以自己设定。

2024-01-04 09:34:51 700

原创 jilnk 错选芯片内核导致的No Cortex-M SW Device问题

一时间手快,使用jlink选择芯片时将内核选成ARM7了,导致了程序下载错误,我检查了下keil里的设置并没有修改芯片内核选项。多方查找,终于发现了问题所在。需要在工程目录下修改jlink的配置文件。找到jLinksettings.ini 配置文件,以及JLINKLog.txt文件。删除这两个文件,并重启keil可重新配置。keil中会重新跳出选择内核界面。当然你直接修改ini文件也可以。

2024-01-03 14:27:24 570 1

原创 simulink之fcn

数学函数——abs、acos、asin、atan、atan2、ceil、cos、cosh、exp、fabs、floor、hyp、ln、log、log10、pow、power、rem、sgn、sin、sinh、sqrt、tan和tanh。如果u是一个向量,u(i)表示该向量的第i个元素;u(1)或u单独表示第一元素。=>=

2023-12-28 11:09:26 1170

原创 simulink之Detect模块

clock每个step都会加1,所以值一直在变化,所以输出为1.当输入为常数时,每个step输入都是常数不变,所以输出为0.当输入信号不等于其先前值时,输出为真(等于1)。当输入信号等于其先前值时,输出为假(等于0)。检测更改块确定输入是否不等于其先前的值。

2023-12-26 16:08:30 407

原创 Triggered and Enabled Subsystem学习

我搭了这样一个模型,仿真时间是从1~100.可以看到display4显示仿真完成后数值是100.所以满足条件,程序得以执行,走一个STEP后。constant3=6,满足Enable条件。trigger是一个STEP模块,上升沿触发。simulink还是看仿真时间的,这个模块我触发了一次,所以一个step只能执行一次。我的理解是同时满足Enable和trigger的条件,程序就可以执行。trigger比较好理解,上升沿触发、下降沿触发以及双边沿触发。可以看到输入常数5,执行一次,最终出来也是常数5.

2023-12-26 10:25:45 339

原创 Algebraic Constraint 代数约束

ASW

2023-12-25 17:18:01 370

原创 stm32的低功耗模式的测试条件

sleep模式 这个模式的功耗跟主时钟的频率正相关,测试时要保证所有端口不浮空,有模拟输入功能的GPIO要设置为模拟输入,没有模拟输入功能的IO口要设置为输出模式,上拉到高电平。stop模式 这个模式的功耗跟主时钟频率没有关系,IO口设置与睡眠模式一样,设置完IO口后disable GPIO的 时钟。standby模式 这个模式有最低的功耗,IO口设置与睡眠模式一样,设置完IO口后disable GPIO的 时钟。如此设置以后,测出来的功耗与stm32手册上的差不多。IO口的设置非常重要,IO浮空的

2023-11-27 09:23:18 436

原创 ECLIC单元

注意:对于上升沿触发的中断,为了提高中断处理的效率,当中断被占用并且核心跳到ISR(中断服务例程)时,ECLIC的硬件会自动清除IP位,而软件不需要清除ISR中的IP位。–注意:对于上升沿触发的中断,为了提高中断处理的效率,当中断被占用并且核心跳到ISR(中断服务例程)时,ECLIC的硬件会自动清除IP位,而软件不需要清除ISR中的IP位。•上面的“i”表示中断ID,一个中断i有自己相应的clicintip[i]、clicintie[i]、Clicinttattr[i]和clicinctl[i]寄存器。

2023-10-19 17:26:03 184

原创 WFI/WFE低功耗机制

核心的输出信号core_sleep_value将输出CSR寄存器sleepvalue的值(注意:此信号仅在断言core_wfi_mode时有效;–当核心检测到输入信号rx_evt(称为事件信号)被断言时,核心将被唤醒并继续执行先前中断的指令流。–注意:如果在等待总线操作完成时发生内存访问错误异常,核心将进入异常处理模式,而不是睡眠模式。–核心的输出信号core_wfi_mode将被断言,表示该核心在执行wfi指令后处于睡眠模式;当所有未完成的事务都完成时,核心安全地进入空闲状态,这被称为睡眠模式。

2023-10-13 11:48:43 620

原创 Nuclei处理器内核中的NMI处理

•取NMI,msubm的值。PTYP将更新为msub的值。获取NMI之前的TYP,如进入/退出NMI时CSR mstatus和msubm更新所示(第20页)。执行mret指令后,硬件将根据msubm的值自动恢复core的Machine Sub Mode。TYP更新为NMI处理模式,如进入/退出NMI时CSR mstatus和msubm更新所述(第20页),以反映当前机器子模式为“NMI处理方式”。•当mmisc_ctl[9]=0时,mnvec的值等于重置后的PC值reset_vector的值。

2023-10-12 15:28:03 120

原创 中断嵌套,NMI 和异常

如果核心处于异常处理模式,并且遇到另一个异常,则会发生异常嵌套。有关更多详细信息,请参阅退出异常处理模式。–如果核心处于NMI处理模式,并且遇到另一个NMI,则此新NMI将被屏蔽。–如果内核处于中断处理模式,并且遇到另一个中断,则可能会发生中断嵌套。本节总结了中断、NMI和异常的嵌套。因此,NMI不能抢占另一个NMI。

2023-10-12 15:06:21 211

原创 Nuclei处理器内核中的异常处理

当核心发生一个异常时,它开始执行从mtvec定义的地址开始的程序,而这个程序通常是一个异常服务例程。例如,如果mcause中的异常代码为0x2,表明此异常是由非法指令引起的,则它可以跳到非法指令故障的特定处理程序。异常是由内核中的内部事件或程序执行过程中的事件引起的,例如硬件故障、程序故障或特殊系统调用指令的执行。TYP更新为异常处理模式,如进入/退出异常时CSR mstatus和msubm更新所示,以反映当前机器子模式为“异常处理模式”。处理器在执行mret指令后的硬件行为如退出异常的整个过程所示。

2023-10-12 14:25:33 88

原创 24Cxx 芯片EEPROM调试总结

发送的地址先试了下0xA0可以通信成功,然后试了下0xA6,也可以,最后试了下0xAE,到0xAE就不行了。注意一定要按照16字节/页写入,不然数据会读取时其他地址会出现不正确的数据。然后写入后不可以立即读取,它是一个硬件,需要等待一段时间读取,立即读取往往读不到。可以知道的是这类芯片现在基本都是国产,网上随便找个芯片手册就可以调起来。我把cmd和cmd2分别写入两块地址中,分别是0xA0和0xA6,然后读取数据。我往芯片里写入16字节数据,然后读280个字节,让我们看看会发生什么。

2023-07-17 16:43:23 91

原创 STLINK只能下载不能debug问题记录

工作中遇到stlink只能下载不能调试问题,以为是固件版本不对,用stlinkupgrade升级固件后,依然不能debug。然后查看cubmx配置,发现SYS中没有配置debug选项,然后选择JATG(5pins),生成代码后就可以下载了。

2023-07-17 09:30:54 286

原创 Synopsys DW_apb_i2c的IIC协议解读

I2C总线是一个双线串行接口,由串行数据线(SDA)和串行时钟(SCL)组成。这些线在连接到总线的设备之间传输信息。每个设备都由一个唯一的地址识别,根据设备的功能,可以作为“发射机”或“接收机”运行。在执行数据传输时,设备也可以被视为主设备或从设备。主设备是一种在总线上启动数据传输并生成时钟信号以允许该传输的设备。在那个时候,任何被寻址的设备都被认为是从设备。

2023-06-27 16:03:06 2125

原创 链接文件的编写语法

您可以使用任何C赋值运算符创建全局符号,并为全局符号赋值(地址):在ld表达式中,赋值和其他运算符有两个区别。赋值只能在表达式的根处使用a=b+3;'是允许的,但a+b=3;'是一个错误。必须在赋值语句的末尾加一个尾随分号(“;”)。分配语句可能出现:作为ld脚本中的命令;或作为SECTIONS命令中的独立语句;或作为SECTIONS命令中节定义内容的一部分。前两种情况实际上是等效的——都定义了一个具有绝对地址的符号。

2023-06-14 14:29:18 780

原创 主动和被动电池平衡的工作原理

串联的电池单元数量越多,电池组电压越高,而并联的电池单元越多,电池总容量越高(以安培小时额定值或Ahrs表示)。然而,滞后的电池尚未完全充电,电池中留下一些能量无法用于驾驶,因为当第一个电池充满电时,充电必须停止。例如,在24kWh系统(96个串联电池)中,假设电池在其寿命结束时具有小于1%的充电时间差(充电时间的差异随着时间的推移而增加),66Ah系统将需要补偿660mAh。(假设电池包括n个串联的电池单元。此外,可用能量的损失是绞合能量的两倍,因为绞合能量是不可用的,并且等量的电荷不能注入另一个电池。

2023-06-07 11:03:07 196

原创 绝对地址定向问题

地址重定向问题

2023-06-01 09:33:11 87

原创 OTG会话请求

OTG会话请求

2022-12-16 17:08:22 166

原创 USB接口

usb接口

2022-12-16 16:39:54 295

原创 mUSB 主机的控制传输

mUSB 主机的控制传输

2022-12-15 19:59:19 646

原创 imxdownload烧录程序到SD卡的要点

imxdownload烧写SD卡要点

2022-12-07 10:44:43 850

空空如也

空空如也

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

TA关注的人

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