Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【FAQ】全志R329如何将I2C时钟频率变成800kHz?

    其它全志芯片讨论区
    r329 faq 技术支持
    1
    1
    1286
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • q1215200171
      budbool LV 9 last edited by

      问题背景

      硬件:R329
      软件:Tina
      注:I2C在全志平台称为TWI,这是同一个模块来的。

      问题简述

      修改了uart的时钟源为50M,twi也会被修改为50M。dts中给某一条twi总线设置的时钟频率为400k,但是实际测得该twi的时钟频率为833kHz。

      问题分析

      twi的工作频率会根据时钟源自动计算最佳分频系数,从而分频而来的。可是为什么会分出800KHz的频率呢?

      1、在R329中,uart和twi公用同一个时钟源——apb2。当用户想要修改uart的波特率为3M时,需要将apb2的时钟源修改成50MHz(原来apb2的时钟源为24MHz),这样twi的时钟源也会同时被修改成50MHz。

      uart驱动的初始化级别为:module_init(sunxi_uart_init); 等级为6
      twi驱动的初始化级别为:fs_initcall(sunxi_i2c_adap_init); 等级为5
      当选用了i2c相关的regulator时,twi驱动的初始化级别则是更早:subsys_initcall(sunxi_i2c_adap_init); 等级为4

      由此看出,uart初始化顺序比twi的要迟。

      2、然后,因为要适配波特率才去修改apb2的时钟源,修改时钟源的代码是在uart中实现的。那么就是说,当uart初始化之后,apb2的时钟源才会更改成50MHz。在uart初始化之前apb2一直保持24MHz。

      所以,在twi初始化的时候,是以24MHz这个频率去计算分频系数的。当twi分频系数已经写入寄存器后,这时候时钟源改变。所以就导致以24MHz的分频系数去分频50MHz,从而分出了833KHz的频率。

      解决方法

      在系统没有选上依赖I2C的PMU时,提前uart驱动初始化顺序即可解决该问题。

      ---
       drivers/tty/serial/sunxi-uart.c | 2 +-
       1 file changed, 1 insertion(+), 1 deletion(-)
      
      diff --git a/drivers/tty/serial/sunxi-uart.c b/drivers/tty/serial/sunxi-uart.c
      index 224646f..87d1135 100644
      --- a/drivers/tty/serial/sunxi-uart.c
      +++ b/drivers/tty/serial/sunxi-uart.c
      @@ -2260,7 +2260,7 @@ static void __exit sunxi_uart_exit(void)
       	uart_unregister_driver(&sw_uart_driver);
       }
       
      -module_init(sunxi_uart_init);
      +subsys_initcall(sunxi_uart_init);
       module_exit(sunxi_uart_exit);
       
       MODULE_AUTHOR("Aaron<leafy.myeh@allwinnertech.com>");
      -- 
      
      1 Reply Last reply Reply Quote Share 0
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策