XMC4500 DAVE3 APP学习笔记

时间:2024.4.21

APP 学习笔记

APP的启用

1 选择APP

在DAVE的右侧选择APP,双击创建APP

2 查看已经创建的APP,在DAVE左下角可以查看已经创建的APP

3 查看APP的说明文档,可以通过help中的help contents查看APP说明文档

4 APP的文件结构,以ADC002作为解释

1)  可以看出ADC002包括ADC002_Conf.h, ADC002.h, ADC002_Conf.c 和ADC002.c4个文件

ADC002_Conf.h:      ADC结构体的声明

ADC002.h,          带有ADC数据结构的定义等

ADC002_Conf.c       ADC结构体的初始化,根据GUI的输入产生

ADC002.c           带有ADC的可执行函数

IO_001

基本功能:作为模拟IO输入使用,可以连接其他上层ADC、DAC单元,

使用:一般情况下,加载了ADC、DAC模块后会自动连接相应IO_001

IO_002

基本功能:作为数字IO输入使用,可以连接其他上层APP,

使用:一般情况下,加载了相应模块后会自动连接相应IO_002,或者,在某些模块没有直接连出的信号,可以通过信号连接把IO_002连接上。

IO_003

基本功能:可以同时设定多个连续的pin作为IO通道。

IO_004

基本功能:作为数字IO输入使用,主要是通过软件写入或读取pin脚状态

使用:

1) 读取IO004_ReadPin(Handle)

2) 设定输出IO004_SetPin(Handle), IO004_SetOutputValue(Handle, Value), IO004_ResetPin(Handle), IO004_TogglePin(Handle)

UART_001

基本功能:通过UART模块进行串行数据的输入输出操作

使用:

1)   相关串行速度、奇偶校验、停止位等在UI中设定

2)   UART001_ReadData(Handle):读取接收到的数据

3)   UART001_WriteData(Handle, Data),写入数据,只能写入8位数据,若数据长度不一致,则会写入低8位

4)   UART的初始化通过UART001_Init,这会在DAVE.h中调用

5)   接收FIFO和发送FIFO的大小都可以通过UI设定,其中Trigger Limit可以设定在FIFO达到什么值后产生中断。需要注意的是接收FIFO的值要是没有及时读出,数据仍旧会接收,造成接收错误中断的产生。

USIC SPI APP (Master 模式)

1         SPI001配置

SPI的配置主界面如下,在这里可以选择波特率,格式,工作模式(半/全双工、单线、双线、四线等),

一般可以选择默认,其他按照需要更改。

其中需要注意的是,APP只能把SPI设定为Master 模式,无法设定为Slave模式。如要设定为Slave模式,需要用户手动更改寄存器或用自己的代买实现。

同时需要注意的是,该APP把DX2反转,且无法通过UI更改。如果要连接其他的Slave模块,要注意这一点。

2         关键函数

其中比较常用的函数如下,其他Init、Configure等函数一般由UI来完成。

SPI001_ReadData()读取函数

SPI001_WriteData()写入函数

SPI001_GetFlagStatus 读取标志位状态

SPI001_ClearFlag   清除标志位状态

EnableStartOfFrame开始帧

EnableEndOfFrame 终止帧

ADC_001

基本功能:

使用Background Source方式进行ADC转换(后台)

使用:

1) 初始化 ADC001_Init(),这个会在DAVE.h中调用

2) ADC001_GenerateLoadEvent(),每次需要转换前,需要调用该函数,才会启动转换,如果在UI里头启用了Auto Scan,则可以不用调用这个函数

3) 通过调用ADC001_GetResult(),来读取结果,结果中包括组号、通道号和结果;如果启用了wait-for-read方式,则必须调用这个函数,下一个结果才能写入

4)GroupA中必须至少选择1个通道

5) 如果在UI里没有使能Arbitration Slot,则需要ADC001_EnableArbitrationSlot()来启用

     

ADC_002

基本功能:

使用Queue Source方式进行ADC转换(队列)

使用:

1) 注意在DAVE.h中调用ADC002_Init()后,仍然要手动在main中调用ADC002_InitializeQueue(),ADC才会工作。

2 )如果在UI里没有使能Arbitration Slot,则需要ADC002_EnableArbitrationSlot()来启用

3) 结果通过ADCCH001_GetResult()读取

ADC_003

基本功能:

使用Scan Source方式进行ADC转换(扫描)

使用:

1) 初始化 ADC003_Init(),这个会在DAVE.h中调用

2) ADC001_GenerateLoadEvent(),每次需要转换前,需要调用该函数,才会启动转换,如果在UI里头启用了Auto Scan,则可以不用调用这个函数

3) 通过调用ADC003_GetResult(),来读取结果,结果中包括组号、通道号和结果;如果启用了wait-for-read方式,则必须调用这个函数,下一个结果才能写入

4)GroupA中必须至少选择1个通道

5) 如果在UI里没有使能Arbitration Slot,则需要ADC001_EnableArbitrationSlot()来启用

ERU_APP

ERU的APP实现实际是通过两个不同的ERU APP来实现的,ERU001和ERU002需要共同配合使用,ERU的输入输出要参考ERU的输入输出表,事实上,其逻辑已经在APP中体现了。

1)   ERU001

基本功能:实现了ERU模块中的ERS和ETL功能,注意UI中A标示通道A,A’标示A的取反

使用:

2)   ERU002

基本功能:实现ERU模块中的OGU功能

使用:

DACWG001

该APP用于输出简单的RAMP波形、正弦波形,或自定义的周期波形,同时也可以根据需要产生指定的电平输出。

1 模式选择

2 自定义波形输入

3 放大比例

NVIC_001

基本功能:中断控制器,可以被多至5个不同的中断所共享

使用:当5个中的一个中断产生时候,会调用所有的中断定义接口,这时候要根据Flag状态判定具体哪个中断要使用

NVIC_002

基本功能:中断控制器,只能连接一个中断

使用:相比NVIC_001,它的中断例程不会被其他中断例程影响,所以适合优先级更高的中断使用。

PWMMP001

基本功能:通过CCU8产生多相(2、3、4)的PWM波,已经预设为中心对齐+非对称模式

使用

1         PWM的开始由SCU_GLCCST8x决定

2 通过SetPeriod() and SetCompare() and SetPeriodAndCompare():

SetPwmFreq() and SetDutyCycle() and SetPWMFreqAndDutyCycle():

等改变PWM周期或占空比。

PWMSP001

基本功能:通过CCU4产生单相的PWM波

使用:

1)  可以通过UI设定频率、占空比等基本参数

2)  如果没哟选择“Start During Initializaton”,则需要在main中调用PWMSP001_Start()

3)  可以在程序中调用PWMSP001_SetCompare(),PWMSP001_SetDutyCycle(),PWMSP001_SetPeriod(),PWMSP001_SetPwmFreq()等函数改变CCU的基本参数等值。

PWMSP002

基本功能:通过CCU8产生单相的PWM波,可设置

使用:

4)  可以通过UI设定频率、占空比等基本参数

5)  如果没哟选择“Start During Initializaton”,则需要在main中调用PWMSP001_Start()

6)  可以在程序中调用PWMSP001_SetCompare(),PWMSP001_SetDutyCycle(),PWMSP001_SetPeriod(),PWMSP001_SetPwmFreq()等函数改变CCU的基本参数等值。

设计实例一:

1 目标: 设计一个实例使用ADC、DAC、PWM、UART、IO、NVIC等APP联合工作的实例

2 功能:

DAC输出RAMP波形或Partern波形,

         在CCU4的Period Match中断中用ADC采样DAC的输出

         ADC采样结果分成2个字写入UART

         UART接收结果分成2个字写入下一个DAC模块,

         DAC模块在Single Value模式下输出

3 结果各模块按照要求输出

4 CCU4的Period Match中断后改为UART的接收FIFO中断,每接收2个字节产生中断,验证功能正常

5 遗留问题:

1)  无法把通过APP的方法把DAC的输出直接通过ADC读入

2) 出现过几次自动生成代码不完整的错误,具体原因不详。

设计实例二:

1 目标: 设计一个可在线更改占空比的PWM发生器

2 功能

ADC采样输入,把ADC的值作为PWM占空比的参考值

        

3 各模块按照要求输出。

RTC001 APP

功能: 用于系统记录一个实时时钟,可记录YY/MM/DD/HH/MM/SS格式的时钟,且可以通过时间计数器按秒、分、时、天、月、年产生中断。

使用

1 可通过图形化的方式初始化RTC模块,

 

2         若未在UI中使能、初始化RTC,则可以通过

1)  RTC001_Enable()RTC001_Disable()分别使能、禁用时钟

2)  RTC001_Clock_SetTime()RTC001_Clock_GetTime()分别设定和读取当前时钟。

3 启用中断。

2 Ethernet APP学习

1)   ETH002

ETH002 是用于实现Ethernet物理层的APP。在这个APP上,主要配置如速度、协商方式。

2)   ETH001

ETH001是用于实现Ethernet MAC层的APP。在这个APP上,主要配置如MAC地址、通讯接口方式(MII、RMII)等。

ETH001 要配合ETH002使用,若选择生成一个ETH001,则会自动生成ETH002的APP。

3)   ETH003

ETH003是用于实现在实时系统下的TCP/IP等协议的APP。

若选择ETH003,则会自动生成相应的ETH002和ETH001,同时因为是基于实时系统的ETH,它还会生成实时系统、文件系统、存储管理系统相关的APP。

ETH003的APP结构如下图

                    


第二篇:学习笔记-1


? 如何将光层的通道服务模式发展为光层和电层的统一调度模式,也是光网络

发展的一大困扰。长期以来,骨干网被分为两层:骨干路由器IP承载网(IP)的骨干光传送网(光层)。两层一直分别独立地发展,主要关联点集中在光层为IP层提供静态配置的物理链路资源,而其他联系却很少。IP层看不到光层的网络拓扑和保护能力,光层也无法了解IP层的动态业务需求。随着业务的迅速增长,IP层的路由器面临着巨大的扩容与处理压力。如何通过光层与电层的统一调度来降低IP层路由器的处理压力,进而降低网络成本和功耗是当前网络亟待解决的一个问题。

? 多业务和用户驱动的本质可以概括为传送网由封闭到开放、由他控到自律的

发展模式问题。要在充分利用光网络的现有资源来满足业务动态化需求的同时,又可以保证传送网本身的可控、可管,以达到业务网与传送网的融合,是未来光网络发展的难点。

? 例如子网掩码是M.N.P.Q,可以套入这么一个公式:(256-M)*(256-N)*(256-P)

*(256-Q),得到的结果,即是这个网段一共有多少个IP地址。在本例中

【255.255.255.248】中,(256-255)*(256-255)*(256-255)*(256-248)=8,那么你就知道这个网段一共8个IP地址。

248 = 128 + 64 + 32 + 16 + 8 = (1111 1000)2

IP地址为211.99.34.33所在的网段一共有8个地址,计算该网段的子网(默认网关)?

把0-255分组,每8个连续的地址编号作为一组,看33在哪个组里面即可。0-7是第一组,8-15是第二组,以此类推,32-39是第五组,而33正在32-39.我们一般说的“网段”,就是指这样的组。于是得出结论,211.99.34.33在子网211.99.34.32,掩码为255.255.255.248的网段中。

书写IP地址的时候,只写地址,不写子网掩码,就无法判断这个地址属于哪个网段。

子网掩码还有一种简单的书写方法,就是在IP地址后面加上”/n”,如果你知

道这个网段有X个IP地址,假设2Y = X,那么n = 32 - Y。比如上面例子中的网段有8个IP地址,23 = 8,那么n = 32 - 3 = 29;上述例子的211.99.34.33就可以表示为:

211.99.34.33/29

私有IP地址网段:

10.0.0.0/8: 10.0.0.0 - 10.255.255.255

172.16.0.0/12 172.16.0.0 - 172.31.255.255

192.168.0.0/16 192.168.0.0 - 192.168.255.255

? CSO:Cross Storey Optimization(跨层优化) A类地址 B类地址 C类地址

更多相关推荐:
Android学习笔记总结初学者必看

Android学习笔记总结第一步Android1在Windows下搭建Android开发环境以及HelloWorld程序搭建Android的开发环境以及写一个简单的示例程序在Windows下搭建Android开...

Oracle学习笔记(总结版)

ORACLE学习笔记一ORACLE的启动和关闭1在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户如下suoraclea启动ORACLE系统oraclegtsvrmgrlSVRMGRgtc...

教师读书学习笔记总结

教师读书学习笔记总结20xx年9月17日学校教科室对初中部教师的读书学习笔记进行了一次全面的评比总结整体情况令人非常满意具体情况总结如下一学习经常热情高老师上交笔记本准时可以看出大家学习的经常全校除2名教师因请...

学习笔记范文

学习笔记范文学习时间月日上下午学习地点团市委会议室学习内容13学习人员主持人一学习记录1题目文章框架2题目文章框架3题目文章框架二学习摘要个人确定三学习心得2

教师学习笔记心得体会范文

师而言,要学的东西实在太多,而我们知道的东西又太少了。有人说,教给学生一杯水,教师应该有一桶水。这话固然有道理,但一桶水如不添加,也有用尽的时候。“问渠哪得清如苏联当代著名教育家苏霍姆林斯基是一位具有30多年教…

学习笔记范文

学习笔记范文学习时间月日上下午学习地点团市委会议室3学习人员一学习记录1题目文章框架2题目文章框架3题目文章框架二学习摘要个人确定三学习心得学习内容1主持人2

英语学习笔记总结

1狐狸安装传真机征税foxfixfaxtax2亲爱的耳朵清楚的听见附近的熊撕裂梨树的诅咒声为疲乏的年担心Dearearclearhearnearbeartearpearswearwearyearfear3父亲宁...

教师读书学习笔记检查总结20xx.2

五原四小教师读书学习笔记检查小结假期生活已经结束老师们除了完成假期的备课学习任务外都积极完成读书笔记截止到2月23日已有70位教师及时上交了他们的读书笔记现将老师们假期读书笔记做一个小结在检查老师的读书笔记中我...

尚观电子商务学习笔记汇总

课程大纲1虚拟机软件及操作系统安装2桌面环境介绍3相关工具安装关机重启命令必须是管理员才能执行rootshutdownhnow马上关机shutdownh601小时之后关机halt马上关机poweroff马上关机...

20xx年司考段波、钟秀勇民法学习笔记总结

段波民法分则笔记总结第一部分债法1债法总论12债权优先建设工程价款破产债权劳动债权动产一物数卖342侵权责任法12过错推定1医疗机构违规隐匿拒绝病历伪造等病历2动物园3管理非法危险物45妨碍通行无过错道路管理有...

Struts1学习笔记总结

Struts1Struts11Struts1和Servlet的关系1创建第一个Struts1项目1例子13总结重点struts1的工作流程基于MVC模式的7一普通的Servlet的工作流程7二Structs1的...

maya粒子系统学习笔记总结

maya粒子系统学习笔记总结maya粒子系统学习笔记总结20xx1116172106转载标签教育1用粒子系统时涉及到动力学的解算打开preferences在playbackplaybackspeed的模式选择为...

学习笔记总结(36篇)