如何把dsPIC33EP512MU810 的波特率设为100K

如题由于我想连接SBUS所以必须将波特率设为100K但U1BRG不接受小数点所以只能设定到最接近得值102K但还是跑不出正确的动作

img

img

【以下回答由 GPT 生成】

首先,要将dsPIC33EP512MU810的波特率设置为100K,我们需要使用UART模块和适当的时钟源。以下是一步一步的解决方案:

步骤1: 确定时钟源 首先,需要确定使用的时钟源和其频率。dsPIC33EP512MU810可以使用多个时钟源,如FRC,FRCPLL,提供1x,4x,16x PLL倍频器的FRC,甚至可以使用外部晶体振荡器等。根据您的具体需求和硬件环境,请确定使用的时钟源和其频率。 例如,假设您使用的是FRCPLL作为时钟源,且其频率为8MHz。

步骤2: 计算通信波特率与波特率发生器值的关系 下一步是计算通信波特率和波特率发生器值之间的关系。dsPIC33EP512MU810有一个波特率发生器寄存器(U1BRG),它确定UART通信的波特率。公式如下所示:

波特率 = 时钟频率 / (16 * (U1BRG + 1))

通过重新排列这个公式并解决方程,可以计算出所需的波特率发生器值。

步骤3: 计算波特率发生器值 根据公式,我们可以计算出波特率发生器值。

U1BRG = (时钟频率 / (16 * 波特率)) - 1

根据我们先前的假设(时钟频率为8MHz,波特率为100K),我们可以将这些值代入公式中计算出波特率发生器值。

U1BRG = (8000000 / (16 * 100000)) - 1

步骤4: 设置波特率发生器值 最后一步是设置U1BRG寄存器的值,将波特率发生器设置为计算所得的值。在C语言中,您可以使用以下代码将U1BRG设置为100K的整数值:

U1BRG = (8000000 / (16 * 100000)) - 1;

请确保在配置和初始化UART模块之前设置U1BRG的值。

这些是将dsPIC33EP512MU810的波特率设置为100K的具体解决方案。请注意,这只是一个参考解决方案,具体实现可能因您所使用的时钟源和硬件环境而有所不同。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^