查看: 5775|回复: 3

【PSOC4】入门学习笔记8——简单的I2C学习

[复制链接]
  • TA的每日心情
    开心
    2019-7-11 11:26
  • 签到天数: 1982 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2013-11-6 11:25:19 | 显示全部楼层 |阅读模式
    分享到:
    试验目的:
    学习使用I2C模块功能,通过I2C(SCB模块)配置为一个I2C主和一个I2C子站,完成两个通信。
    试验步骤:
    1、在原理图放入两个I2C模块,分别配置为主站和子站,放置一个数字量输入模块,配置为中断方式。见图1.JPG所示。
    2、配置I2C模块,见图2.JPG和3.JPG所示。
    3、配置数字量输入模块及中断,详见入门学习笔记7。
    4、分配管脚:将按键分配为P0.7,I2C_S:SCL分配到P0.4,I2C_S:sda分配到P0.5,I2C_M:SCL分配到P4.0,I2C_M:sda分配到      P4.1。
    5、编写程序:
    (1)、中断程序:比较简单,就是当检测到按键按下一次时,将中断标志位flag做取反运算,当flag为0时,让读写标志Read_Write_Flag=0x10,当flag为1时,Read_Write_Flag=0x20。
    (2)、主函数:首先是做初始化,然后在for循环中,如果Read_Write_Flag=0x10时,从主模块写入数据到子站,如果Read_Write_Flag=0x20时,读回主站写入子站的数据。(见图4.JPG)

    6、试验现象及存在的问题:
    (1)、按下按键,当Read_Write_Flag=0x10时,可以写入数据,但是当要读时,就全是FF了,不知道为什么。(调试见5.JPG)
    (2)、定义的数组uint8 I2C_masterBuffer[6]; 和uint8 I2C_slaveBuffer[6];如果在main函数外定义没有问题,如果放入main里面,程序就会死。
    (3)、如果上面两个数组放在main函数外,但是对数组进行初始化,程序也会死。


    1.jpg
    2.JPG
    3.JPG
    4.JPG
    5.JPG
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-2 16:02
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-11-11 14:39:52 | 显示全部楼层
    学习了,楼主找到工作不正常的原因了没有?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-11-23 12:14:28 | 显示全部楼层
    学习了学习了学习了学习了学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2017-12-17 18:53:53 | 显示全部楼层
    做个标记,有空学下
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-17 01:38 , Processed in 0.144088 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.