liamjeal 发表于 2012-8-4 17:21:50

I2C CoX样例

本帖最后由 liamjeal 于 2012-8-4 17:28 编辑

基于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);            
      
}
页: [1]
查看完整版本: I2C CoX样例