Microchip dsPIC30F1010/202X 系列芯片勘误与数据手册说明

电子说

1.4w人已加入

描述

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 的编程器、调试器和仿真工具来识别硅片版本级别。具体步骤如下:

  1. 使用适当的接口将设备连接到硬件调试器。
  2. 打开一个 MPLAB IDE 项目。
  3. 为适当的设备和硬件调试器配置 MPLAB IDE 项目。
  4. 根据使用的 MPLAB IDE 版本执行以下操作:
    • 对于 MPLAB IDE 8,选择“Programmer > Reconnect”。
    • 对于 MPLAB X IDE,选择“Window > Dashboard”并点击“Refresh Debug Tool Status”图标。
  5. 根据使用的开发工具,部件编号和设备修订 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 系列芯片时,我们需要充分了解这些硅片问题,并根据实际情况采取相应的解决方法。通过合理的设计和调试,我们可以最大程度地减少这些问题对系统性能的影响。各位工程师在实际应用中遇到类似问题时,不妨参考本文提供的解决思路,希望能帮助大家顺利完成设计任务。你在使用这款芯片时是否也遇到过类似的问题呢?欢迎在评论区分享你的经验。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分