9.让DAVE修改解决方案
当DAVE解析器提供了一个解决方案时,你肯定希望DAVE能给你一些选择。
为了更好的理解这个概念,看下图:
图1:举个例子
在上图中,一个UART通道的Transmit连接到一个输出口Pad。从XMC4500的参考手册中,可以看到有几种选择:
- USIC0-CH0 -> P1.2
- USIC0-CH0 -> P1.3
- USIC0-CH1 -> P2.5
- USIC1-CH1 -> P3.14
还有其他更多的选择。
DAVE会从中自由选择1个,但是你也可以指定选哪个,这称为“约束”。通过提供约束条件,你就约束了解析器。
让我们回到前几章你费尽周折创建的应用。这个应用也许其P2.5连接到RS232的TX。你可以约束DAVE,把UART通道连接到P2.5。
手动分配引脚
IO可以手动分配引脚。
DAVE允许你从设备的多个可选引脚中选择。
如果引脚需要连接到一个资源(例如一个UART通道),DAVE只列出符合此约束的引脚,即,可以作为UART通道使用的引脚。
所以,要把UART发送信号连接到P2.5,开启手动引脚分配视图。
图2:进入手动引脚分配功能
UART APP使用具有发送和接收功能的IO。我们只查找具有发送功能的引脚。
图3:选择正确引脚
一旦选中正确的引脚,就为其分配端口。
图4:分配端口
分配完成后,保存此约束。
图5:保存约束
保存约束后,需重新生成代码库。
快速检查一下,DAVE确实受到约束了。
图6:确认约束生效
查看USIC外设的内部连接章节,确认一下:
图7:从参考手册确认
手动资源分配
此特性适用于所有的虚拟资源,包括IO引脚。你可以强制DAVE为虚拟资源分配指定的物理资源。例如,你的应用需要一个USIC通道,你可以强制DAVE分配USIC2-CH0。
在手动分配引脚特性中,你指定了IO引脚,DAVE将UART通道连接到指定的IO。反过来也是可以的,即,你可以指定一个UART通道,DAVE会把IO连接到此UART通道。
首先,把前面的P2.5改为Not Selected.
图8:撤销手动引脚分配
复位所有手动分配的引脚,更新模式。
然后,照下图进行手动资源分配。
图9:手动资源分配
现在,按下图设置。
图10:手动分配UART通道
重新生成代码,看看你的修改是否生效。
图11:确认通道分配情况
从参考手册确认
图12:从参考手册确认
硬件信号连接
使用该特性,你可以获得基于你手动设定连接的物理资源。
例如,硬件允许一个CCU4的定时器状态输出连接到多个目标信号。你可以约束DAVE分配一个CCU4片,它的定时器状态输出连接到ADC。
下面是一个关于手动信号连接的例子。
图13:一个包含ADC和PWM APP的工程
为了手动连接PWM(CC4 ST信号)与ADC(门控信号),在PWM APP上点右键,选择HW Signal Connections。
图14:打开HW Signal Connections功能
在Source signal中选择timer_status。
图15:选择源信号
你会发现PWM的timer status输出信号可以连接到多个APP。
图16:可以选择多个目标连接点
选择ADC APP及其门控信号作为目标连接点。
图17:目标信号选择
解析完成后,通过Report可以看到CCU41的CC43片已经连接到VADC的Group-0的队列请求源。
图18:分配的资源
查看参考手册,确认硬件上允许这样的连接。
图19:确认
全局中断
该特性用于配置预抢占优先级和子优先级。
如果工程中需要配置的中断很多,该特性可以在一个窗口中配置所有中断。
XMC4000设备可以配置预抢占优先级和子优先级,XMC1000设备只能配置预抢占优先级。
图20:全局中断
图21:保存中断配置
预定资源组
该特性帮助用户预约整个资源组。你甚至可以在把APP添加到工程之前就使用该功能。
预定功能针对于激活的工程,以及激活的工程中使用的设备。要使用该功能,在DAVE菜单的Advanced菜单中选择Reserve Resource Group …
图22:预定资源组功能
图23:预定资源组对话框
用户可以在Search按钮前面的文本框中,按如下格式搜索资源组:
<外设名称> _ <寄存器名称>.<位域名称>_
例如:CCU42_CC41FPC.PCMP
用户键入时,会给出建议列表。
图24:内容辅助
完成输入,点击Search按钮后,结果会显示在Search文本框下方。
要预定资源组,用户可以双击结果列表中的资源组。当用户试图预定一个资源组时,解析器会检查预定是否可行。如果不可行,则不会预定。如果可行,则该资源组被预定,并显示在Search文本框上方的Resource Group列表中。
要移除预定,在Resource Group列表中资源组上点右键,选择Remove。
在资源组上点右键,选择Show Bitfields,可以看到资源组所有的位域。
DAVE默认提供了一个合理的解决方案,但是你可以通过约束来获得适合你需要的方案。