波特率发生器详解:MSSP1 模块在 Android App 安全加固中的应用

需积分: 44 26 下载量 105 浏览量 更新于2024-08-10 收藏 6.33MB PDF 举报
"波特率发生器在微控制器中的应用与配置" 在嵌入式系统中,尤其是在使用微控制器如PIC系列时,波特率发生器(BRG)是一个关键组件,尤其在进行串行通信如I2C和SPI时。在本文档中,重点介绍了在MSSP1模块中波特率发生器的运作机制和配置方法,这适用于基于PIC12F/LF1822和PIC16F/LF1823等采用nanoWatt XLP技术的微控制器。 波特率发生器的主要功能是在I2C和SPI主模式下生成所需的时钟频率,以便正确同步数据传输。在MSSP1模块中,波特率发生器的重载值存储在SSP1ADD寄存器中。每当SSP1BUF寄存器被写入时,BRG就会开始递减计数。当操作完成后,内部时钟会自动停止,时钟引脚保持其最后状态。这个过程由内部的“重载”信号触发,该信号在SSP1ADD值加载到BRG计数器中时激活,每次模块时钟线振荡都会发生两次,具体逻辑取决于MSSP1当前的工作模式。 公式25-1描述了如何计算波特率,这涉及到主时钟频率(FCLOCK)、系统振荡器频率(FOSC)以及SSPxADD寄存器的值。表25-4列出了在不同指令周期下的时钟速率,以及对应的SSP1ADD的BRG值,这些值可以帮助开发者精确设定通信速度。需要注意的是,在用作I2C波特率发生器时,值0x00、0x01和0x02是无效的,这是硬件实现的限制。 举例来说,当FOSC为32MHz,FCY(FOSC/2)为16MHz时,若要达到100kHz的SPI时钟速率,BRG值应设为0x4F;而如果目标是400kHz的I2C波特率,虽然不符合官方I2C规范,但可以尝试设置BRG值为0x09,这在某些高频率需求的应用场景中可能是可接受的。 在配置波特率发生器时,SSP1M<3:0>位用来控制BRG递减计数器,而SSP1ADD<7:0>则存储了决定波特率的具体数值。此外,SCL(时钟线)的控制和重载控制也非常重要,它们共同确保了通信协议的正确执行。 理解并正确配置波特率发生器是实现高效、可靠的串行通信的关键步骤。开发者需要根据应用需求和微控制器的具体规格来选择合适的BRG值和工作模式,同时考虑系统时钟频率、I2C和SPI的协议规范,以确保数据传输的稳定性和准确性。在使用Microchip的微控制器时,建议参考英文原版文档以获取最新和最准确的技术信息。