• 大小: 145KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签: LM3S  驱动库  I2C  

资源简介

基于ti驱动库lm3s芯片I2C模块例程,控制温度传感器LM75A,经过测试可以使用。可配合lm3s的I2C使用文档查阅使用。

资源截图

代码片段和文件信息

#include  “LM3S_I2CM.h“
#include  
#include  
#include  
#include  


#define  PART_LM3S1138
#include  


//  定义工作状态
#define  STAT_IDLE              0                   //  空闲状态
#define  STAT_ADDR              1                   //  发送数据地址状态
#define  STAT_DATA              2                   //  接收或发送数据状态
#define  STAT_FINISH            3                   //  收发完成状态


//  定义全局变量
static unsigned long I2CM_base = I2C0_MASTER_base;  //  定义I2C主机基址,并初始化
static tI2CM_DEVICE gtDevice;                       //  器件数据接口
static unsigned char gucStatus = STAT_IDLE;         //  工作状态
static tBoolean gbSendRecv;                         //  收发操作标志,false发送,true接收
static char gcAddr[4];                              //  数据地址数组
static unsigned int guiAddrIndex;                   //  数据地址数组索引变量
static unsigned int guiDataIndex;                   //  数据缓冲区索引变量


//  对tI2CM_DEVICE结构体变量初始化设置所有数据成员
void I2CM_DeviceInitSet(tI2CM_DEVICE *pDevice unsigned char ucSLA
                                               unsigned long ulAddr
                                               unsigned int uiLen
                                               char *pcData
                                               unsigned int uiSize)
{
    pDevice->ucSLA = ucSLA;
    pDevice->ulAddr = ulAddr;
    pDevice->uiLen = uiLen;
    pDevice->pcData = pcData;
    pDevice->uiSize = uiSize;
}


//  对tI2CM_DEVICE结构体变量设置与数据收发相关的成员(数据地址、数据缓冲区、数据大小)
void I2CM_DeviceDataSet(tI2CM_DEVICE *pDevice unsigned long ulAddr
                                               char *pcData
                                               unsigned int uiSize)
{
    pDevice->ulAddr = ulAddr;
    pDevice->pcData = pcData;
    pDevice->uiSize = uiSize;
}


//  I2C主机初始化
void I2CM_Init(void)
{
    I2CM_DeviceInitSet(>Device 0 0 0 (void *)0 0);

    if ((I2CM_base != I2C0_MASTER_base) && (I2CM_base != I2C1_MASTER_base))
    {
        I2CM_base = I2C0_MASTER_base;
    }

    switch (I2CM_base)
    {
    case I2C0_MASTER_base:
        SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);         //  使能I2C0模块
        SysCtlPeripheralEnable(I2C0SCL_PERIPH);             //  使能SCL所在的GPIO模块
        GPIOPinTypeI2C(I2C0SCL_PORT I2C0SCL_PIN);          //  配置相关管脚为SCL功能
        SysCtlPeripheralEnable(I2C0SDA_PERIPH);             //  使能SDA所在的GPIO模块
        GPIOPinTypeI2C(I2C0SDA_PORT I2C0SDA_PIN);          //  配置相关管脚为SDA功能
        IntEnable(INT_I2C0);                                //  使能I2C0中断
        break;

    case I2C1_MASTER_base:
        SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);         //  使能I2C1模块
        SysCtlPeripheralEnable(I2C1SCL_PERIPH);             //  使能SCL所在的GPIO模块
        GPIOPinTypeI2C(I2C1SCL_PORT I2C1SCL_PIN);          //  配置相关管脚为SCL功能
        SysCtlPeripheralEnable(I2C1SDA_PERIPH);             //  使能SDA所在的GPIO模块
        GPIOPinTypeI2C(I2C1SDA_PORT I2C1SDA_PIN);         

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2926  2008-10-27 11:18  uartGetPut.c
     文件         442  2008-10-06 08:51  uartGetPut.h
     文件      128804  2008-11-05 10:35  LM75A.pdf
     文件       25304  2009-02-12 17:21  LM75A基本应用电路.gif
     文件        7709  2009-03-11 09:48  Demo.dep
     文件       33547  2008-07-02 15:38  Demo.ewd
     文件       41357  2008-11-07 09:24  Demo.ewp
     文件         158  2008-07-02 15:19  Demo.eww
     文件       10162  2009-04-22 09:20  LM3S_I2CM.c
     文件        1630  2009-03-11 09:44  LM3S_I2CM.h
     文件        2226  2009-04-22 09:39  main.c
     文件        9179  2008-11-04 08:59  startup_ewarm.c
     文件        1723  2008-10-13 09:35  systemInit.c
     文件         749  2008-10-27 14:54  systemInit.h

评论

共有 条评论