当前位置:网站首页>2837xd代码生成模块学习(3)——IIC、eCAN、SCI、Watchdog、eCAP模块
2837xd代码生成模块学习(3)——IIC、eCAN、SCI、Watchdog、eCAP模块
2022-07-02 06:35:00 【Quikk】
模型链接: 链接
1 IIC 模块
1.1 模型功能
实现向地址0x50的从机写入数据(100 ,1),然后检测当写入数据发生变化时,就开始从(从机地址为0x50)的空间读取刚刚写入的数据。

可以看到上图中主要分为三大部分:1.全局变量的定义。2.写入数据。3.读取数据。
1.全局变量的定义使用的是Data Store Memory模块,与之对应的还有Data Store Write和Data Store Read模块用来读写开辟的空间,其Data Store Memory中设置如下:

2.写入数据子模块如下图,这里使用的是Enable Subsystem,与Trigger Subsystem的不同在于Enable Subsystem是电平触发而Trigger Subsystem是边沿触发。这里就是将数据和地址进行拼接然后给Transmit模块进行发送。


3.读取数据模块是发送给设备地址,然后do…while循环中等待I2caRegs.I2CFFTX.all标志准备好(TXFFST中会显示接收到数据的长度),然后使能接收模块进行接收数据,之后将数据存储在全局变量A和B中

do…while模块中情形:

2 eCAN模块
eCAN模块分为接收模块和发送模块,接收模块参数如下(目前进入接收中断服务函数执行,还有点问题。):

eCAN接收模块自带一个函数触发执行的接口,在搭建模型中,我接入了一个LED翻转的子模块。即当接收到消息后,LED会进行翻转。

eCAN发送模块参数如下,因为CAN的数据帧最大是8个字节长度,所以一定要注意给他的数据最大是一个无符号64位的数据。

这里构建了八字节发送和四字节发送两中数据发送的端口。这里要注意一下,需要修改Constant模块的输出类型。

之后需要在Configuration Parameters 中对eCAN_A进行相关的设置:

2.1 实验结果
这里使用的是硬件使用的是USB转CAN,软件是CANTest上位机进行的测试,可以看到发送ID为0x01的数据,dsp接收后LED进行翻转。然后观测数据是存在大端/小端存储的现象的这一点需要注意。串口调试助手中也可以清晰的看到数据格式,起始标准+数据长度+ID+数据的格式。


3 SCI模块

中断函数是SCIA的中断服务号:9.1。内部如下

这个实现了SCI接收中断,将发送的数据进行返回。
SCI模块也有接收和发送两个模块:接收模块配置:

发送模块配置:

之后需要在Configuration Parameters 中对SCI_A进行相关的设置:

3.1 实验结果

可以看到发送的数据可以正常返回。
4 看门狗模块
看门狗模块在实际程序中可以有效的防止程序跑飞。在Simulink中需要首先在Configuration Parameters中进行相关的设置,下图中的周期就是看门狗的溢出时间(即若在此时间内没有进行喂狗操作,则会复位整个系统)。

对应的在Simulink库文件中存在,Watchdog模块(用来喂狗)这里采用-1的意思是与仿真步长时间一样。在这里也可以设置喂狗时间,但是一定要注意这个喂狗时间必须小于上述在Target hardware resources中设置的时间,这样才能喂狗正常。

5 eCAP模块
eCAP模式是输入捕获模块,可以用来进行测试信号周期等信息。另外也可以用来作为APWM模式输出PWM波。

如上图,在Configuration Parameters中可以设置eCAP模式和APWM模型的管脚。
5.1 APWM模式
在选项卡中进行相应的设置即可。


实验结果:

5.2 eCAP模式
选项卡进行如下的设置即可,此时模块拥有一个输出接口TS,若按图中所示设置,第一次捕获上升沿,第二次捕获下降沿,第三次捕获上升沿。即就可以算出方波信号的占空比。那么输出直接利用DeMux模块可以分别得到三个时刻的计数器数组,数组乘以TCLK即得到时间。



边栏推荐
- Creation and jump of activity
- What is the function of laravel facade
- vs+qt 设置应用程序图标
- DTM distributed transaction manager PHP collaboration client V0.1 beta release!!!
- Read Day6 30 minutes before going to bed every day_ Day6_ Date_ Calendar_ LocalDate_ TimeStamp_ LocalTime
- The road is blocked and long, and the line is coming
- How to use pyqt5 to make a sensitive word detection tool
- Because of hard work, the fruit goes with fate
- 道阻且长,行则将至
- web安全与防御
猜你喜欢

Idempotent design of Internet API interface

Matplotlib swordsman - a stylist who can draw without tools and code

Activity的创建和跳转

2837xd 代码生成——StateFlow(4)

Hystrix implements request consolidation

个人经历&&博客现状

C language programming problems

Share a blog (water blog)

上班第一天的报错(AWVS卸载不彻底)

Image recognition - data annotation
随机推荐
c语言编程题
一次聊天勾起的回忆
Memories of a chat
Typora安装包分享
Tools used for Yolo object recognition and data generation
三相并网逆变器PI控制——离网模式
图像识别-数据清洗
C language programming problems
2837xd 代码生成——StateFlow(3)
Redis installation and deployment (windows/linux)
Cmake command - Official Document
Creation and jump of activity
Thinkphp5 how to determine whether a table exists
每天睡前30分钟阅读Day6_Day6_Date_Calendar_LocalDate_TimeStamp_LocalTime
Navicat remote connection MySQL reports an error 1045 - access denied for user 'root' @ '222.173.220.236' (using password: yes)
Timed thread pool implements request merging
How to use pyqt5 to make a sensitive word detection tool
Idempotent design of Internet API interface
Amq6126 problem solving ideas
Image recognition - data annotation