查看: 6013|回复: 15

[已解决] MKL15 I2C寄存器(已解决)

[复制链接]

该用户从未签到

4

主题

16

帖子

0

注册会员

Rank: 2

积分
64
最后登录
2014-12-11
发表于 2014-11-12 11:26:30 | 显示全部楼层 |阅读模式
本帖最后由 ninimi 于 2014-11-15 23:19 编辑

/** I2C - Peripheral registerstructure */
typedef structI2C_MemMap {
uint8_t A1;                       /**< I2C Address Register 1, offset: 0x0*/
uint8_t F;                 /**< I2C Frequency Divider register, offset: 0x1 */
uint8_t C1;                       /**< I2C Control Register 1, offset: 0x2*/
uint8_t S;                           /**< I2C Status register, offset: 0x3 */
uint8_t D;                          /**< I2C Data I/O register, offset: 0x4*/
uint8_t C2;                       /**< I2C Control Register 2, offset: 0x5*/
uint8_t FLT;  /**< I2C Programmable Input Glitch Filter register,offset: 0x6 */
uint8_t RA;                    /**< I2C Range Address register, offset: 0x7 */
uint8_t SMB;       /**< I2C SMBus Control and Status register, offset:0x8 */
uint8_t A2;                       /**< I2C Address Register 2, offset: 0x9*/
uint8_t SLTH;          /**< I2C SCLLow Timeout Register High, offset: 0xA */
uint8_t SLTL;           /**< I2C SCL Low Timeout Register Low, offset: 0xB */
} volatile *I2C_MemMapPtr;

请问有关于I2C各寄存器的位说明吗?比如我现在需要配置
I2C0_F  = 0x65;       /* set MULT and ICR */               

我知道答案 目前已有15人回答
回复

使用道具 举报

该用户从未签到

4

主题

16

帖子

0

注册会员

Rank: 2

积分
64
最后登录
2014-12-11
 楼主| 发表于 2014-11-12 11:34:43 | 显示全部楼层
每个模块都有自己的寄存器,我没有这方面的资料,有好心人愿意分享一下吗?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-11-12 11:34:50 | 显示全部楼层
    楼主你好
    请问你是否有下载KL15的参考手册KL15P80M48SF0RM
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    64
    最后登录
    2014-12-11
     楼主| 发表于 2014-11-12 13:16:57 | 显示全部楼层
    FSL_TICS_Robin 发表于 2014-11-12 11:34
    楼主你好
    请问你是否有下载KL15的参考手册KL15P80M48SF0RM?

    Thank you !非常感谢!缺的就是它了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-11-12 13:22:22 | 显示全部楼层
    ninimi 发表于 2014-11-12 13:16
    Thank you !非常感谢!缺的就是它了。

    原来你都没看过这个参考手册呀
    参考手册是开发芯片程序必备的,上面有各模块详细的介绍。

    请看文档[url=https://www.freescale.co
    m/zh-Hans/webapp/sps/site/prod_summary.jsp?code=KL1x&fpsp=1&tab=Documentation_Tab]KL1x: Kinetis KL1x - 48 MHz,通用,数据连接,高集成度,超低功耗微控制器(MCU)[/url]页面,数据手册、勘误表、应用手册等同样是开发必备的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-11-12 13:23:43 | 显示全部楼层
    FSL_TICS_Robin 发表于 2014-11-12 13:22
    原来你都没看过这个参考手册呀
    参考手册是开发芯片程序必备的,上面有各模块详细的介绍。

    其中KLQRUG Kinetis L Peripheral Module Quick Reference A Compilation of Demonstration Software for Kinetis L Series Modules是开发必看的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    64
    最后登录
    2014-12-11
     楼主| 发表于 2014-11-12 15:35:11 | 显示全部楼层
    FSL_TICS_Robin 发表于 2014-11-12 13:22
    原来你都没看过这个参考手册呀
    参考手册是开发芯片程序必备的,上面有各模块详细的介绍。

    我们老板最近一直在美国出差,说好给我们买板子调试的,他一直忙也不知道买了没有。我还是实习生,也不好多问。我就抽空的时候自己查点零星的资料自学了。谢谢啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-11-12 15:53:22 | 显示全部楼层
    ninimi 发表于 2014-11-12 15:35
    我们老板最近一直在美国出差,说好给我们买板子调试的,他一直忙也不知道买了没有。我还是实习生,也不好 ...

    不用客气呢
    学习过程中遇到问题欢迎随时来飞思卡尔FAE线上技术支持版块发帖与大家一起讨论。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    64
    最后登录
    2014-12-11
     楼主| 发表于 2014-11-12 16:16:10 | 显示全部楼层
    FSL_TICS_Robin 发表于 2014-11-12 15:53
    不用客气呢
    学习过程中遇到问题欢迎随时来飞思卡尔FAE线上技术支持版块发帖与大家一起讨论。
    ...

    你好,还是想请教一下I2C_F 的MULT 和ICR是怎么设置的
    MULT是随便配的吗?
    我看了ICR 的配置说明,还是不太清楚怎么设置

    ClockRate
    Prescales the bus clock for bit rate selection. This field and the MULT field determine the I2C baud rate,
    the SDA hold time, the SCL start hold time, and the SCL stop hold time. For a list of values corresponding
    to each ICR setting, see I2C divider and hold values.
    The SCL divider multiplied by multiplier factor (mul) determines the I2C baud rate.
    I2C baud rate = bus speed (Hz)/(mul × SCL divider)
    The SDA hold time is the delay from the falling edge of SCL (I2C clock) to the changing of SDA (I2C data).
    SDA hold time = bus period (s) × mul × SDA hold value
    The SCL start hold time is the delay from the falling edge of SDA (I2C data) while SCL is high (start
    condition) to the falling edge of SCL (I2C clock).
    SCL start hold time = bus period (s) × mul × SCL start hold value
    The SCL stop hold time is the delay from the rising edge of SCL (I2C clock) to the rising edge of SDA (I2C
    data) while SCL is high (stop condition).
    SCL stop hold time = bus period (s) × mul × SCL stop hold value
    For example, if the bus speed is 8 MHz, the following table shows the possible hold time values with
    different ICR and MULT selections to achieve an I2C baud rate of 100 kbps.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-11-14 09:38:29 | 显示全部楼层
    ninimi 发表于 2014-11-12 16:16
    你好,还是想请教一下I2C_F 的MULT 和ICR是怎么设置的
    MULT是随便配的吗?
    我看了ICR 的配置说明,还是不 ...

    楼主你好
    不好意思回复你晚了。

    按照I2Cx_F寄存器ICR里的例子来计算一下:
    波特率应该是已知的(在主从机支持的波特率范围内自己决定),bus speed也是已知的(你应该自己知道芯片BUS频率)。
    根据需求的波特率100kbps,使用第一个公式   I2C baud rate = bus speed (Hz)/(mul × SCL divider)   计算出匹配的(mul × SCL divider)=80。
    36.3.2 I2C Frequency Divider register (I2Cx_F).jpg
    再去“Table 36-41. I2C divider and hold values”查表获知满足(mul × SCL divider)=80条件的也就是下图几种可能的ICR值、MULT值:
    36.4.1.10 I2C divider and hold values.jpg

    以第一个满足条件的MULT、ICR值为例:MULT=2h也就是mul=4,ICR=00h也就是SCL divider=20。
    那么查上表就可以知道SDA hold value、SCL start hold value、SCL stop hold value了:


    SDA hold time = bus period (s) × mul × SDA hold value = 1/8000000× 4 × 7 = 3.5us
    SCL start hold time = bus period (s) × mul × SCL start hold value = 1/8000000× 4 × 6 = 3us
    SCL stop hold time = bus period (s) × mul × SCL stop hold value = 1/8000000× 4 × 11 = 5.5us

    最后就是挑选一个合适的SDA hold time、SCL start hold time、SCL stop hold time组合情况下的MULT\ICR值即可。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 19:47 , Processed in 0.117969 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表