打印
[CooCox]

I2C CoX样例

[复制链接]
1720|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liam_lee|  楼主 | 2012-9-3 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liam_lee 于 2012-9-3 22:20 编辑

基于cox的代码在各个厂商的M0/M3芯片上移植,几乎是零修改,只需要根据具体硬件连接在头文件里面进行pin等相关配置,就可以完全复用, 因此基于cox开发的外围驱动(LCD, SD, Sensor等等)都是完全复用的,基于cox开发的arduino shield驱动也都是可复用的。并且这不影响用户应用层代码的特性,因为cox还提供了芯片特有特性的APIs。
详细可以到github上查看各个系列各个芯片下面外设的样例,也可以到CoIDE下面直接添加使用。

下面分享一段代码片段,一个基于cox的I2C代码样例:
void I2CExample(void)                                               
  {                                                                              
    //      
    // 设置系统时钟,用主时钟,外部8M晶振      
    //                                         
    xSysCtlClockSet(72000000, xSYSCTL_OSC_MAIN | xSYSCTL_XTAL_8MHZ);   
   
    //
    // 以I2C_BASE为参数使能I2C外设
    //        
    xSysCtlPeripheralEnable2(ulMaster);        
    xSysCtlPeripheralReset2(ulMaster);                                    
    //
    // 施能GPIO,AFIO
    //            
    xSysCtlPeripheralEnable2(xGPIO_PORTC_BASE);               
    xSysCtlPeripheralEnable(SYSCTL_PERIPH_AFIO);                           
    //
    // I2C功能管脚配置,参数是管脚功能名,Short pin
    //            
    xSPinTypeI2C(I2C0SCK, PC4);                          
    xSPinTypeI2C(I2C0SDA, PC5);                                          
    //
    // I2C初始化并使能
    //         
    xI2CMasterInit(ulMaster, 400000);           
    xI2CMasterEnable(ulMaster);
     
    //
    // 非阻塞的发送地址和第一个数据
    //   
    xI2CMasterWriteS1(ulMaster, 0x12, 'a', xfalse);
    //
    // 非阻塞的发送数据
    //
    xI2CMasterWriteS2(ulMaster, 'b', xfalse);      
    xI2CMasterWriteS2(ulMaster, 'c', xfalse);
    xI2CMasterWriteS2(ulMaster, 'd', xfalse);  
     
    //
    // 阻塞性的读取地址为0x12从机上的数据
    //
    xI2CMasterReadBufS1(ulMaster, 0x12, ucTemp, 5, xtrue);                     
}
上面这个代码样例,无论是在nuvoton,st,TI, Freescale,nxp,atmel,holtek等等所有的arm cortex m0/m0+/m3/m4上都是完全复用,平滑移植的。

相关帖子

沙发
dong_abc| | 2012-11-9 00:22 | 只看该作者
顶一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

148

帖子

0

粉丝