ayaqby 发表于 2014-11-13 09:00:12

求助:KE02的I2C求解(已解决)

本帖最后由 ayaqby 于 2014-11-13 10:09 编辑

#define I2C_SLAVE_ADDRESS1          0x50
uint8_t u8I2C_SendBuff;
uint8_t u8I2C_ReceiveBuff;
int main (void)
{

部分代码未显示

        while(1)
        {
      I2C_MasterSendWait(I2C0,I2C_SLAVE_ADDRESS1,&u8I2C_SendBuff,64);
      I2C_MasterReadWait(I2C0,I2C_SLAVE_ADDRESS1,&u8I2C_ReceiveBuff,64);
      printf("Read data from I2C slave:\n");
      for(i=0;i<8;i++)
      {
            for(j=0;j<8;j++)
            {
                printf("0x%x,", u8I2C_ReceiveBuff);
            }

            printf("\n");
      }
      u8I2C_SendBuff++;
      for(i=1;i<64;i++)
      {
            u8I2C_SendBuff = i+u8I2C_SendBuff;
      }
      for(i=0;i<0xfffff;i++);
        }

}
在读库函数例程的时候#define I2C_SLAVE_ADDRESS1          0x50我理解为从设备地址,请问这个地址是PRDM-KE02Z上面的哪个地址 还是KE02芯片内部的地址呢,求大神帮助,谢谢

fengyunyu 发表于 2014-11-13 09:21:40

“printf("Read data from I2C slave:\n");”,看代码是做主机,可能是演示两个设备的I2C通信的。比如两个FRDM-KE02Z之间通信。

FSL_TICS_ZJJ 发表于 2014-11-13 09:37:58

楼主你好!0X50是从机地址。这个地址也是芯片I2C的地址。也就是说,如果你要实现通信,你需要另外一块KE02作为从机实现通信。

秦天 发表于 2014-11-13 09:38:16

同求 不知道这个地址指向哪

FSL_TICS_ZJJ 发表于 2014-11-13 09:40:14

fengyunyu 发表于 2014-11-13 09:21
“printf("Read data from I2C slave:\n");”,看代码是做主机,可能是演示两个设备的I2C通信的。比如两个F ...

对的,需要两块的FRDM板子做I2C通信的。
另外板上有个加速度传感器8451,但是它作为从机,地址不是0X50。
所以,需要另外一块KE02做从机使用,代码包里有从机的代码,正好是配置从机地址为0X50的。

ayaqby 发表于 2014-11-13 09:42:09

fengyunyu 发表于 2014-11-13 09:21
“printf("Read data from I2C slave:\n");”,看代码是做主机,可能是演示两个设备的I2C通信的。比如两个F ...

两个FRDM-KE02Z之间I2C通信,那什么连接啊

FSL_TICS_ZJJ 发表于 2014-11-13 09:48:08

ayaqby 发表于 2014-11-13 09:42
两个FRDM-KE02Z之间I2C通信,那什么连接啊

找到板子对应的原理图你就知道了,但是你要把板上有些电阻焊上,或者直接用焊锡短接。


把板上R39,R47短接。
然后再把两块板子的J2的,18,20脚找导线连接就可以了。
你先试试,如果有问题,欢迎继续交流。

ayaqby 发表于 2014-11-13 09:49:53

FSL_TICS_ZJJ 发表于 2014-11-13 09:40
对的,需要两块的FRDM板子做I2C通信的。
另外板上有个加速度传感器8451,但是它作为从机,地址不是0X50。
...

I2C_MasterPoll_demo这个例程在一个FRDM板子上运行得到的数据如下
-System Log BEGINS--


Familly ID = 0x0, Sub-family ID = 0x2, Revision ID = 0x0, Pin ID = 0x7
Pin Reset

--System Log ENDS--


Running the I2C_MasterPoll_demo project.
Read data from I2C slave:
0xA1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
Read data from I2C slave:
0xA1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
我的理解是这些数据是从I2C从设备读出来的,请问这个从设备是板子的哪里呢,谢谢

ayaqby 发表于 2014-11-13 09:50:59

FSL_TICS_ZJJ 发表于 2014-11-13 09:40
对的,需要两块的FRDM板子做I2C通信的。
另外板上有个加速度传感器8451,但是它作为从机,地址不是0X50。
...

I2C_MasterPoll_demo这个例程在一个FRDM板子上运行得到的数据如下
-System Log BEGINS--


Familly ID = 0x0, Sub-family ID = 0x2, Revision ID = 0x0, Pin ID = 0x7
Pin Reset

--System Log ENDS--


Running the I2C_MasterPoll_demo project.
Read data from I2C slave:
0xA1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
Read data from I2C slave:
0xA1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
我的理解是这些数据是从I2C从设备读出来的,请问这个从设备的地址 是哪里呢,谢谢

ayaqby 发表于 2014-11-13 09:53:37

网络延时么,回一次贴怎么会出现两个呢

FSL_TICS_ZJJ 发表于 2014-11-13 09:58:55

本帖最后由 FSL_TICS_ZJJ 于 2014-11-13 10:00 编辑

ayaqby 发表于 2014-11-13 09:49
I2C_MasterPoll_demo这个例程在一个FRDM板子上运行得到的数据如下
-System Log BEGINS--



楼主,是另一块板子呢。
其实在KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\src\projects\KE02\I2C_MasterPoll_demo
这个路径下面有个readme.txt.里面讲的很清楚,如何使用。


@par Example description
   ===================
This example provides a template for I2C master with poll mode.
it cycle to transfer a frame data(64 bytes) and show it on terminal.
it also provide a template for how to initialize I2C module.

@par Code configuration
   ===================
Make sure the following macros are defined in ke02_config.h:\n
   USE_FEE and \n
   EXT_CLK_FREQ_KHZ macro is defined to 10000.

@par Directory contents
   ==================
- platforms/ke02_config.h               library and board Configuration file
- projects/ke02/isr.h                   Interrupt handler installation
- projects/ke02/I2C_MasterPoll_demo.c   Main program

@par Hardware environment
   ====================
- Board: freedom FRDM-KE02Z, revA
       - Requirement for demo:
               1. populate R47,R39 \n
                2. connect two boards with J2 18-18(SDA),20-20(SCL), 14-14(GND)                

@par How to use it
   =============
In order to make the program work, you must do the following :
- Rebuild all project files and load demo code into the device
- Connect J6 USB port to the computer that will find serial terminal port
- Open the serial terminal
- Configure the serial terminal to protocol: 8-N-1, 115200bps, and flow control: none
- Run the example

FSL_TICS_ZJJ 发表于 2014-11-13 10:00:28

ayaqby 发表于 2014-11-13 09:53
网络延时么,回一次贴怎么会出现两个呢

可能发太快了,没关系。

ayaqby 发表于 2014-11-13 10:01:02

FSL_TICS_ZJJ 发表于 2014-11-13 09:58
楼主,是另一块板子呢。
其实在KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\src\projects\KE02\I2C_MasterPol ...

没看readme是我的错,只买了一块板子啊 {:cry:}

ayaqby 发表于 2014-11-13 10:01:26

FSL_TICS_ZJJ 发表于 2014-11-13 09:58
楼主,是另一块板子呢。
其实在KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\src\projects\KE02\I2C_MasterPol ...

谢谢您的解释 ,谢谢

FSL_TICS_ZJJ 发表于 2014-11-13 10:03:13

本帖最后由 FSL_TICS_ZJJ 于 2014-11-13 10:10 编辑

ayaqby 发表于 2014-11-13 10:01
没看readme是我的错,只买了一块板子啊

那你玩和加速度传感器通信,也是I2C的。
在KE02_SC里面有个LAB_demo工程,里面有和加速度传感器通信的例程。
有问题,欢迎发帖交流。

ayaqby 发表于 2014-11-13 10:08:56

FSL_TICS_ZJJ 发表于 2014-11-13 10:03
那你玩和加速度传感器通信,也是SPI的。
在KE02_SC里面有个LAB_demo工程,里面有和加速度传感器通信的例 ...

好的,麻烦你了 ,谢谢有不懂的再请教,谢谢

FSL_TICS_ZJJ 发表于 2014-11-13 10:10:51

ayaqby 发表于 2014-11-13 10:08
好的,麻烦你了 ,谢谢有不懂的再请教,谢谢

好的,刚在15楼说错了,和加速度是I2C的。
有问题尽快提问啊。

秦天 发表于 2014-11-13 14:18:22

FSL_TICS_ZJJ 发表于 2014-11-13 09:58
楼主,是另一块板子呢。
其实在KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\src\projects\KE02\I2C_MasterPol ...

Read me 藏得太深了,例程半个月前都快跑完了
到如今才知道还有这么个说明!!!

ayaqby 发表于 2014-11-13 14:31:42

秦天 发表于 2014-11-13 14:18
Read me 藏得太深了,例程半个月前都快跑完了
到如今才知道还有这么个说明!!! ...

您是怎么跑的,I2C是怎么测试的呢?谢谢

秦天 发表于 2014-11-13 22:03:10

ayaqby 发表于 2014-11-13 14:31
您是怎么跑的,I2C是怎么测试的呢?谢谢

该从机地址啊 我当初也只是简单的跑了下 换成传感器地址0x1D 注意手册上的要求过几天我还要系统的学习下IIC

ayaqby 发表于 2014-11-14 07:13:22

秦天 发表于 2014-11-13 22:03
该从机地址啊 我当初也只是简单的跑了下 换成传感器地址0x1D 注意手册上的要求过几天我还要系统的学习 ...

谢谢我也试一下

FSL_TICS_ZJJ 发表于 2014-11-14 09:10:24

秦天 发表于 2014-11-13 14:18
Read me 藏得太深了,例程半个月前都快跑完了
到如今才知道还有这么个说明!!! ...

其实和代码包并列的文件夹里也有,是专门的readme文件夹,你可能没注意到:
KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\refman\ke02

kation122 发表于 2014-11-14 17:58:52

谢谢分享,资料先收藏了。
页: [1]
查看完整版本: 求助:KE02的I2C求解(已解决)