This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
现在、我们公司的某个产品(使用 MSP430f673系列芯片)发现了下面的图片来描述这个问题;目前、硬件中采用了32.678khz 晶体振荡器、并且程序中配置和运行的主要频率为:16.777216MHz [fDC0 (7、0)、DCORSEL = 7、DC0X=0、MODx ]。 根据芯片手册、有以下问题:
DCO 寄存器与主频率配置之间有何关系?
当主频率以16.777216MHZ 运行且程序配置了 fDC0 (7、0)时、波特率位错误率是多少以及如何计算位错误率?
如果 fDC0 (5,0)的配置:如何选择 DC0X (0~31)和 MODx (0~31)?
您好!
对于 Q1:DCO 和 MCLK 频率之间的关系。
如下图所示、DCORSEL 是一个在时钟模块中选择所需时钟范围的寄存器。这8个时钟频率范围具有交叉关系、有多个频率范围选项、但它们都将锁定到用户设置的时钟频率。 因此、在选择频率范围时、您需要根据数据表中的测试结果选择适当的频率范围、以避免时钟无法稳定的问题。
我们的数据表提供了 fDCO 频率测试结果(DCORSELx=5、DCOx=0、MODx=0)。 启用 CS 模块后,FLL 模块将根据用户设置调整 DCO 和 MOD 值。 您需要参考这两个测试结果:DCORSELx=5、DCOx=0、MODx=0和 DCORSELx=5、DCOx=31、MODx=0、较严格的频率范围应该是 DCORSELx=5、DCOx=0、MODx = 0介于最大频率和 DCORx=31之间、经测试的最小频率 DCORx=0。
如果 DCORSELx=5、则严格的频率范围为:6.0MHz–23.7MHz。
对于 Q2: 位错误数据。
F6736的内部 CS 模块采用两级调整、DCO 和 MOD。 有关特定的调整方法和准确性,请参阅《用户指南》: https://www.ti.com/lit/pdf/slau208
对于 Q3: 如何选择 DC0X (0~31)和 MODx (0~31)。
您可以在《用户指南》中找到计算该值的方法:
您还可以参考以下示例代码:
https://dev.ti.com/tirex/explore/node?node=AE3hVQ5KblKFE9OakCirWA__IOGqZri__LATEST
谢谢!
此致
Johnson
没有人可以告诉您 DCO 和 MOD 的正确值是多少、因为这会因器件(以及温度和电压)而异。
实现此目的的方法是设置 DCORSEL=5 [参考数据表(SLAS731D)表5-10]并将 UCSCTL2:FLLN 设置为16777216/32768-1 = 511。[参考用户指南(SLAU208Q)第5.2.6节]
FLL 将动态调整 DCO 和 MOD、以匹配您使用 FLLN 请求的频率。 此外、它还将监控频率并在条件(温度和电压)变化时进行调整。
用户指南表36-4和36-5介绍了 UART 错误率。 它们因时钟和线速而异、因为它们是由整数除数引起的。
示例 MSP430F673x_UCS_4.c 说明了使用32kHz 晶体实现2.45MHz 的过程。
http://dev.ti.com/tirex/explore/node?node=AMHGg2hEpWELN4xXfipV0g__IOGqZri__LATEST
[编辑:更正了拼写错误]
[编辑:Johnson He is correct -- DCORSEL=5 (也许6)是比7更好的选择]