Microchip dsPIC30F1010/202X 系列芯片勘误与数据手册说明
在电子设计领域,芯片的性能和稳定性至关重要。Microchip 的 dsPIC30F1010/202X 系列芯片在众多应用中发挥着重要作用,但在实际使用过程中,我们也发现了一些硅片问题。本文将详细介绍这些问题及其解决方法,希望能对各位电子工程师有所帮助。
文件下载:DM300023.pdf
一、芯片概述
dsPIC30F1010/202X 系列设备在功能上基本符合当前的设备数据手册(DS70178C),但存在一些本文中描述的异常情况。硅片问题涉及特定的设备和版本 ID,具体信息可参考表 1。
1.1 硅片版本 ID
| 部件编号 | 设备 ID | 硅片版本的修订 ID | |||
|---|---|---|---|---|---|
| A0 | A1 | A2 | A3 | ||
| dsPIC30F1010 | 0x4040 | ||||
| dsPIC30F2020 | 0x4000 | 0x1000 | 0x1001 | 0x1002 | 0x1003 |
| dsPIC30F2023 | 0x4030 |
注:关于特定设备的设备和修订 ID 的详细信息,请参考“dsPIC30F 系列参考手册,第 4 节。程序存储器”(DS70051)。
1.2 硅片版本识别
可以使用当前版本的 MPLAB IDE 以及 Microchip 的编程器、调试器和仿真工具来识别硅片版本级别。具体步骤如下:
- 使用适当的接口将设备连接到硬件调试器。
- 打开一个 MPLAB IDE 项目。
- 为适当的设备和硬件调试器配置 MPLAB IDE 项目。
- 根据使用的 MPLAB IDE 版本执行以下操作:
- 对于 MPLAB IDE 8,选择“Programmer > Reconnect”。
- 对于 MPLAB X IDE,选择“Window > Dashboard”并点击“Refresh Debug Tool Status”图标。
- 根据使用的开发工具,部件编号和设备修订 ID 值将显示在输出窗口中。
如果无法提取硅片版本级别,请联系当地的 Microchip 销售办事处寻求帮助。
二、硅片问题总结
2.1 PWM 模块问题
- 死区时间设置问题:当死区时间功能启用时,写入死区时间寄存器(DTRx 和 ALTDTRx)的值不能小于 0x0010,否则 PWMxH 和 PWMxL 输出可能无法正常工作。解决方法是禁用死区时间或确保 DTRx 和 ALTDRx 的值为 0x0010 或更大。
- 占空比分辨率问题:数据手册中提到的 1.1 ns 占空比分辨率并非在所有情况下都适用,在某些范围内占空比分辨率为 16 ns。设计时应尽量使 PWM 发生器在 1.1 ns 分辨率的范围内工作。
- 触发问题:PWM 特殊事件触发和 PWM 单独触发在 PWM 周期开始附近可能无法正常工作,TRIGx 或 SEVTCMP 的最小值应为 0x0008。在固件中应检查 TRIGx 和/或 SEVTCMP 的值是否大于 0x0008 且小于 PWM 周期。
- 覆盖功能问题:PWM 覆盖功能在某些情况下不能正常工作,当只设置一个覆盖位(OVRENH 或 OVRENL)时,PWMxH 和 PWMxL 引脚不会显示 OVRDAT<1:0> 位指定的状态。可以使用 GPIO 模块来覆盖 PWM 输出。
- 占空比更新问题:当启用即时占空比更新且加载到占空比寄存器的值小于或等于 0x0010 时,PWM 输出状态会与预期相反。如果启用即时占空比更新,不要将占空比寄存器加载小于或等于 0x0010 的值。
- 优先级问题:PWMx 引脚所有权的优先级方案与数据手册中描述的不同,实际由 IOCONx 寄存器中的输出覆盖数据位、电流限制覆盖数据位和故障覆盖数据位进行与运算确定。目前没有解决方法。
- 抖动问题:PWM 输出可能会出现与设备运行速度成比例的抖动,最大抖动可通过公式计算。应使电源 PWM 模块的参数误差在应用允许的范围内。
2.2 ADC 模块问题
- 全局软件触发问题:使用全局软件触发进行多次模数转换时,必须清除 ADSTAT 寄存器中的 PxRDY 位,否则无法启动新的转换。可以按照特定顺序手动触发 ADC 转换,或者选择单独软件触发。
- 采样保持定时问题:PWM - ADC 采样保持触发定时的分辨率实际为 41.6 ns,而不是数据手册中指定的 8 ns。目前没有解决方法。
- 中断问题:每个 ADC 引脚对的单独中断在 dsPIC30F1010/202X Rev. A3 设备上不起作用。可以将每个 ADC 引脚对配置为发起全局 ADC 中断,并使用 ADBASE 寄存器创建跳转表。
- 转换速率问题:ADC 模块的最大转换速率为 1.5 Msps,而不是数据手册中指示的 2.0 Msps。目前没有解决方法。
2.3 其他模块问题
- 输出比较模块:在某些条件下,输出比较引脚会产生毛刺;当 Duty Cycle 寄存器值从 0x0000 更新到 0x0001 时,会错过一个比较事件;在双比较匹配模式下,当 OCxR 和 OCxRS 寄存器值差为 1 时,可能会错过复位比较事件。
- SPI 模块:SPI 模块的从机选择功能可能无法正常工作;在帧主模式下,如果 FRMDLY = 1,可能无法生成帧同步脉冲;当 SPI 模块在主模式下配置为 1:1 预分频因子时,SMP 位无效。
- UART 模块:UART 模块存在多种问题,如奇偶校验错误、接收缓冲区溢出错误、高波特率模式下接收数据损坏、UTXISEL0 位读取问题、自动波特率功能不准确等。针对不同问题有相应的解决方法,如加载偶数到波特率生成器寄存器、使用 16x 波特率选项等。
- I²C 模块:I²C 模块在总线冲突、10 位寻址模式等方面存在问题,如总线冲突状态位设置异常、I2CTRN 寄存器写入问题、ACKSTAT 位状态反映不准确等。针对不同问题有相应的解决方法,如手动检查 IWCOL 位、轮询 SDA 线等。
- MCLR 模块:当 dsPIC DSC SMPS 设备在启用 PLL 的情况下运行且发生欠压事件时,MCLR 引脚可能无法正常复位设备。建议使用外部欠压复位(BOR)电路,并在软件中进行时钟切换。
- CPU 模块:十进制调整指令 DAW.b 可能会错误清除进位位 C。在执行 DAW.b 指令之前检查进位位状态,若进位位被设置,在执行后再次设置进位位。
- PSV 模块:在某些寻址模式下访问 PSV 页面的前四个字节时会发生地址错误陷阱。避免使用特定寻址模式访问前四个字节,或者使用 MPLAB® C30 版本 3.11 或更高版本的命令行开关 -merrata=psv_trap。
- FRC 模块:当振荡器调谐寄存器(OSCTUN)设置为 '0b1111' 或 '0b1110' 时,FRC 频率与预期不符。应使用其他允许的值设置 FRC 频率。
三、数据手册说明
文档中还对最新版本的设备数据手册(DS70178C)进行了排版修正和说明,但目前文档中未提及具体内容。
四、总结
在使用 Microchip dsPIC30F1010/202X 系列芯片时,我们需要充分了解这些硅片问题,并根据实际情况采取相应的解决方法。通过合理的设计和调试,我们可以最大程度地减少这些问题对系统性能的影响。各位工程师在实际应用中遇到类似问题时,不妨参考本文提供的解决思路,希望能帮助大家顺利完成设计任务。你在使用这款芯片时是否也遇到过类似的问题呢?欢迎在评论区分享你的经验。
-
解决方法
+关注
关注
0文章
16浏览量
8592
发布评论请先 登录
Microchip dsPIC30F1010/202X 系列芯片勘误与数据手册说明
评论