|
STM32F40x and STM32F41x Errata sheet(2012-08 Rev 3).pdf
(277 KB, 下载次数: 245)
还未未翻译完,留个帖子保存下翻译内容。
没有时间翻译了,大家如果有时间,可以帮忙翻译下,全部结束后,我将整理文档格式为 pdf 文档,共享给大家。
STM32F40x 和 STM32F41x 硬件BUG
2.1 系统
2.1.1 不支持ART预取指令加速
版本A不支持ART预取指令加速功能。
版本A无此BUG
2.1.2 MCU器件ID不正确
A版本,STM32F40x、STM32F41x和STM32F20x、STM32F21x 具有相同的器件ID。器件ID可以通过读0xE004 2000获得。
对于版本A,可以结合内核型号来区别。STM32F2xxx的内核为CortexM3, STM32F4xxx的内核为CortexM4
版本Z无此BUG
2.1.3 调试Stop模式和systick定时器
在Stop模式调试时(DBGMCU_CR寄存器的DBG_STOP位为1),如果systick定时器中断使能,它会将从CPU从Stop模式唤醒。
解决方法:调试Stop模式时,请静止Systick 定时中断。
2.1.4 调试WFE进入的调试模式
当DBGMCU_CR寄存器的DBG_STOP位为1时,应该允许在Stop模式调试软件。
然而,如果软件使用WFE指令进入Stop模式,在唤醒后WFE指令后面的指令可能遗失。
解决方法:在WFE指令后面插入一条NOP指令, 例如:
__asm void _WFE(void) {
WFE
NOP
BX lr }
2.1.5 无NJTRST引脚的全功能JTAG接口无法使用
问题描述:如果NJTRST(PB4)用足普通GPIO,那么4线JTAG接口将无法使用。
解决方法:使用2线的SWD调试接口替代4线JTAG接口。
2.1.6 Z版本PDR_ON引脚功能在LQFP100封装的器件中无效
问题描述:Z版本LQFP100封装的器件,PDR_ON(99脚)固定接Vss。也可以这样认为:POR/PDR(上电复位和掉电复位)一直使能。
解决方法:
A版本的PDR_ON引脚连接到VDD(POR/PDR使能)
Z版本连接PDR_ON引脚到VSS
如果A版本的PDR_ON引脚连接到VSS(POR/PDR禁止)。以后MCU升级到Z版本时,无需修改硬件。然而,因为POR/PDR使能时VDD最小值是1.8V,
因此LQF100封装的MCU的供电电压VDD不能为1.7V。
2.1.7 连续编程BOR选项字节时会出错
问题描述:当AHB预分频设置大于2时,连续编程BOR选项字节将导致写入错误的数据。
解决方法:每编程一个BOR字节时执行一次系统复位,即使当AHB与分频设置为1或2时。
2.1.8 配置PH10和PI10作为外部中断时将导致错误结果
问题描述:PH10和PI10作为EXTI10外部中断源时(通过设置SYSCFG_EXTICR3寄存器的EXTI10[3:0]为0x0111或0x1000),
将使能PH2和PI2为外部中断源。造成的结果是如果PH2/PI2没有设置为中断源时,PH10/PI10不能作为外部中断源。
意思是SYSCFG_EXTICR3寄存器的EXTI10[3:0]和SYSCFG_EXTICR1寄存器的EXTI2[3:0]将被编程为相同的值:
0x0111 将选择PH10/PH2为中断源
0x1000 将选择PI10/PI2为中断源
解决办法:无
2.1.9 同时管理AHB和APB外设时,DMA2数据将混乱
问题描述:当DMA2正在管理AHB外设(仅外设内置FIFO)并且APB传输时,将产生数据混乱(多个DMA访问)
反生的条件:
1、被DMA传输到AHB外设的数据将被破坏
2、对于内存,结果是多重访问(软件不可见),数据不会被破坏
3、对于DCMI,将产生一个多重无应答请求,也可以说是一个位置的DMA行为
AHB外设内置FIFO指DCMI,CRYPTO和HASH。在售的型号没有CRYPTO,仅DCMI被影响。通过FSMC控制的FIFO也被影响。
解决办法:避免用DMA2同时管理AHB(DCMI,CRYPTO,HASH,FSMC外部FIFO)和APB传输。
2.1.10 DMA传输时降低APB时钟将导致DMA传输终止
问题描述:当DMA正在对APB外设执行写操作时,如果CPU修改APB时钟(降低时钟;修改AHB/APB预分频从1到2,1到4,1到8或者1到16)
将导致DMA传输被终止。只有系统复位才能恢复。
解决方法:在降低APB时钟前,等待这个APB上的DMA传输结束。
2.1.11 MPU属性设置到RTC和IWDG寄存器时将被错误管理
问题描述:如果MPU被使用并且无缓冲属性被设置到RTC或IWDG内存映射区域时,CPU访问RTC或IWDG寄存器将被作为可缓冲的,
但前提是没有配置APB预分频(AHB/APB与分频比为1)
解决办法:如果这些寄存器需要无缓冲特性,软件可以在写操作后执行一次读操作,从而保证写操作完成。
2.1.12 RCC外设时钟使能后的延迟
问题描述:使能RCC外设时钟和外设有效之间存在延迟
这个延迟决定于外设映射:
1, 如果外设映射到AHB,延迟将是2 个AHB周期
2. 如果外设映射到APB,延迟将是1 + (AHB/APB预分频比)个周期
解决方法:
1) 使用DSB指令暂缓Cortex-M CPU 管道直到执行完成为止
2) 在写RCC使能位和写外设寄存器之间插入n个NOP指令
AHB外设,n = 2; APB外设,n = 1 + AHB/APB分频比
2.1.13 电池电压检测低于2.4V
问题描述:如果 (VDD = VDDA)低于或等于2.4V,将不能保证在全温度范围内和全电压范围内VBAT转换的正确性。
当VBAT被设置分压(VBAT/2)连接到ADC输入时。为了正确地监视电池电压,ADC输入必须不高于(VDD-0.6V).
于是, VBAT/2 < VDD - 0.6V 指示为 VDD > 2.4V
解决方法:无。 (VDD = VDDA)应该大于2.4V。
2.1.14 内部噪声印象ADC精度
问题描述:内部产生的VDD噪声在内部传播可能影响ADC精度
这个噪声一直有效,无论MCU的电源模式是RUN还是Sleep.
解决方法:
1、配置Flash ART为关闭预取功能和(Data + 指令)cache 打开
2、对ADC转算结果进行平均和滤波处理
对于更多的细节,请参考 AN4073
2.2 IWDG 外设限制
2.2.1 进入STOP模式RVU和PVU标志没有复位
问题描述:写IWDG_RLR和IWDG_PR寄存器后IWDG_SR寄存器的RVU和PVU标志应该由硬件分别设置为1.
如果在写操作后立即进入STOP模式,RVU和PVU标志不能被硬件设置为1
在执行第2次写IWDG_RLR或IWDG_PR寄存器之前,软件必须等待RVU或PVU标志被复位。
但因为退出STOP模式时,RVU/PVU标志没有复位,软件可能进入死循环,独立看门狗(IWDG)超时后产生
一个复位信号。
解决方法:进入STOP模式之前,等待IWDG_SR寄存器的RVU或PVU标志复位。
2.3 I2C外设限制
2.3.1 SMBus标准支持不完全
问题描述:I2C外设不能完全兼容SMBus v2.0标准,因为它不支持NACK应答一个无效字节/命令。
解决办法:在对目标设置进行写操作时,使用高层机制,比如:
1、如果主机支持的话,使用SMBAL引脚
2、告警应带地址协议(ARA)
3、主机通知协议
2.3.2 一个错位的Stop之后不能产生Start
问题描述:如果主机产生一个错位的Stop(总线错误),外设不能产生Start
解决方法:在I2C标准中,仅在完整字节(8Bit+ACK)结束后才允许发送Stop,所以这种情况是不允许的。
其它的衍生协议,象CBUS允许这种情况发生,但MCU的I2C外设不支持。
软件的解决方法为使用I2C_CR1控制寄存器中的SWRST位复位I2C外设。
2.3.3
|
|