原创 AG32开发者 AG32开发者 2024年11月22日 16:59 上海
对于MCU开发者,端口的上下拉再熟悉不过了。硬件的设计人员也会特别关注每一个引脚的上电默认电平。但是AG32的大部分端口在程序加载前是floating状态的。复位结束后,FPGA的配置程序开始从flash里加载,加载时间随着程序的大小略有区别,一般在20mS,也就是说,在上电复位后到端口上下拉起效,至少还有20多mS的不定状态。很多开发人员往往因为这短暂的20mS,导致系统无法启动,或者进入一个未知的状态。因此,一般建议设计人员对上电电平有要求的引脚外加适当的上下拉电阻。AG32内部的上下拉电阻的阻值在40k左右。
AG32的上下拉在ASF文件里配置,
比如给PIN96设置上拉:
set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to PIN_96
或者
set_instance_assignment -name CFG_KEEP -to PIN_96 2'b10 -extension
这两种方法效果一样,可以只用其中一种。如果两个都用,那就是同时用两个40k电阻上拉,相当于20k上拉。
如果给PIN96设置下拉,则使用以下方式:
set_instance_assignment -name CFG_KEEP -to PIN_96 2'b01 -extension
设置下拉就一种方法,也就是只能40k下拉。
从上面也可以看出,AG32的上下拉是通过改变CPLD里的配置来实现的。也就是说,AG32如果要动态改变上下拉,那就比较麻烦。MCU需要通过FCB接口(FPGA CONTROL BLOCK)来重新配置CPLD。AGM提供了官方例程,但是客户用的比较少,因此这里也不介绍了。如果有需要的,我们可以微信探讨。
同样,在某些场合,开发者需要增强端口驱动能力,以此来增加可靠性,增加抗干扰能力。这同样也在ASF文件里配置。
如增强PIN96的驱动能力到16mA:
set_instance_assignment -name CURRENT_STRENGTH -to PIN_96 16MA
驱动能力最高可以到32mA, 2mA一个step。
相比其它MCU, AG32在这方面设置起来的确麻烦一点,开发者需要注意一下。
|