查看: 3783|回复: 5

[已解决] KL25Z用PE生成IIC模块的代码(已解决)

[复制链接]

该用户从未签到

13

主题

62

帖子

0

中级会员

Rank: 3Rank: 3

积分
238
最后登录
1970-1-1
发表于 2014-7-31 21:21:45 | 显示全部楼层 |阅读模式
 今天看了论坛里的一篇教程《飞思卡尔 accelerometer 例程指南》,里面用到PE来生成IIC0的代码,仿照教程上做了一下:
以下是教程上的IIC0的配置:
IIC配置.png
以下是教程上的驱动代码:
IIC教程代码.png
教程里面的配置的7位ADDRESS是0X1D,因此在生成的IIC驱动代码里8位的地址是0X3AU。
但是,我根据教程上的配置来做,生成的代码如下:
IIC生成代码.png
不知道为什么我的代码里面没有对应的IIC的ADDRESS,我在配置里面也设置了ADDRESS为1D的。
不知道有没有前辈遇到过这样情况的,求指导。感激不尽。
 
我知道答案 目前已有3人回答
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-1 10:29:35 | 显示全部楼层

    回复:KL25Z用PE生成IIC模块的代码

    楼主你好
    建议你给个那篇帖子链接,这样才能方便大家找到那个例程包来帮你测试。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-1 11:03:59 | 显示全部楼层

    回复:KL25Z用PE生成IIC模块的代码

    回复第 2 楼 于2014-08-01 10:29:35发表:
    楼主你好
    建议你给个那篇帖子链接,这样才能方便大家找到那个例程包来帮你测试。
     

    终于找到了,楼主说的应该是手把手学会官方例程:KL25 加速度传感器PE例程 吧?
    请问你用的CodeWarrior10.x软件版本,我刚用CW10.6修改地址为2D后点击生成代码,那个地址是能够变化的。
    I2c add.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13

    主题

    62

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    238
    最后登录
    1970-1-1
     楼主| 发表于 2014-8-1 21:44:46 | 显示全部楼层

    回复:KL25Z用PE生成IIC模块的代码

    回复第 3 楼 于2014-08-01 11:03:59发表:
    回复第 2 楼 于2014-08-01 10:29:35发表:
    楼主你好
    建议你给个那篇帖子链接,这样才能方便大家找到那个例程包来帮你测试。
     

    终于找到了,楼主说的应该是手把手学会官方例程:KL25 加速度传感器PE例程 吧?
    请问你用的CodeWarrior10.x软件版本,我刚用CW10.6修改地址为2D后点击生成代码,那个地址是能够变化的。

     
    嗯嗯,是这篇例程。我用的是10.5版本,刚刚找到原因了。是各个版本之间的不同导致。在IIC的初始化里面没有知名地址,但在生成的IIC发送和接收函数中是指明了地址的。
    一直也没注意找,刚刚看发送和接收函数时才找到。谢谢您啦。
    IIC.png
    还有一个疑惑的问题想请教您:
    我根据教程中的IIC读取传感器代码自己修改了一下用在磁传感器HMC5883上,没有用原来代码中的“空闲”、“接收”、“发送”状态切换,直接先发送寄存器地址再读取寄存器数据:
    读取传感器.png
    如果是单步调试,以上代码没问题,能正确读出数据。但如果直接运行,就会卡在上面的红圈中。
    DataTransmittedFlg是IIC发送完成的标志,如果发送完成,会在IIC的发送中断处理函数中将DataTransmittedFlg变为TRUE,从而继续运行。
    这是events.c中的中断处理函数,您在例程中也能看到。
    发送标志.png
    不知道为什么单步调试就能运行成功,直接运行就不行。
    我在想这会不会和我在PE中设置的SCL的频率有关系:我的SCL频率设置为75KHZ,是不是在直接运行时发送完寄存器地址时紧接着读取数据时,中间间隔时间过短,
    但我试了几个SCL频率都还是不对。
    多谢您。
    FAE实在是太热心了,大赞
     
     
     
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-8-4 09:59:25 | 显示全部楼层

    回复:KL25Z用PE生成IIC模块的代码

    楼主你好
    请问你是否有尝试用逻辑分析仪抓取一下总线时序看哪一步出错呢?
    关于I2C的时钟在勘误表中有一点:If the I2Cx_F[MULT] field is written with a non-zero value, then a repeat start cannot be generated 如果你满足这点需要参考勘误表的解决办法。
    关于你提到的时间长短,可以根据数据手册“3.8.4 Inter-Integrated Circuit Interface (I2C) timing”表格查看是否满足。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    0

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    2016-11-10
    发表于 2014-9-26 11:33:33 | 显示全部楼层

    回复:KL25Z用PE生成IIC模块的代码(已解决)

    回复第 5 楼 于2014-08-04 09:59:25发表:
    楼主你好
    请问你是否有尝试用逻辑分析仪抓取一下总线时序看哪一步出错呢?
    关于I2C的时钟在勘误表中有一点:If the I2Cx_F[MULT] field is written with a non-zero value, then a repeat start cannot be generated 如果你满足这点需要参考勘误表的解决办法。
    关于你提到的时间长短,可以根据数据手册“3.8.4 Inter-Integrated Circuit Interface (I2C) timing”表格查看是否满足。
     
    我现在也是单步调试能通过,但是运行却不行,卡在发送那个地方了trasmittedflg
     
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 23:31 , Processed in 0.098491 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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