3回答

1收藏

[原创] 【PSOC4】入门学习笔记8——简单的I2C学习

英飞凌 英飞凌 7909 人阅读 | 3 人回复 | 2013-11-06

试验目的:
学习使用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 (58.28 KB, 下载次数: 110)

1.jpg

2.JPG (50.04 KB, 下载次数: 96)

2.JPG

3.JPG (53.56 KB, 下载次数: 82)

3.JPG

4.JPG (156.43 KB, 下载次数: 111)

4.JPG

5.JPG (65.99 KB, 下载次数: 104)

5.JPG
分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

xiaopaohu123

发表于 2013-11-11 14:39:52 | 只看该作者

学习了,楼主找到工作不正常的原因了没有?
板凳

党国特派员

发表于 2016-11-23 12:14:28 | 只看该作者

学习了学习了学习了学习了学习了
喜欢在构思妙想,电子产品DIY是工作,也是一种爱好。
地板

feixiang20

发表于 2017-12-17 18:53:53 | 只看该作者

做个标记,有空学下
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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