⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic.c

📁 TMS320VC5509A IIC的CSL配置程序,
💻 C
字号:
#include<stdio.h>
#include<csl.h>
#include<csl_i2c.h>
#include <csl_pll.h>

#pragma CODE_SECTION (XRDY_fun,"myfun");
#pragma CODE_SECTION (RRDY_fun,"myfun");
#pragma CODE_SECTION (Reserved_fun,"myfun");
void XRDY_fun(void);
void RRDY_fun(void);
void Reserved_fun(void);
#pragma DATA_SECTION (writedata,"section_xx");
#pragma DATA_SECTION (receivedata,"section_yy");
Uint16 writedata[1],receivedata[1];

I2C_Setup i2csetup=
{
0,//0 7位地址;1 10位地址
0x0000,//自身的地址,仅用于器件为从设备时
144,//系统时钟频率
400,//传输输率400kbps
0,//0 数据为8位
1,//0 关循环模式;1 开循环模式
1 //0 free模式关;1 free模式开
};

PLL_Config pllconfig=
{
 0, //iai 退出idle模式后,pll锁定与进入idle模式前的过程相同
 1, //iob 相位失锁后,时钟发生器切换到旁路模式,并重新开始PLL的锁相过程
 6,//pllmult 乘以12
 0//div      除以1 因为输入时钟为12M,所以得到cpu时钟为144M
} ;

I2C_IsrAddr addr = {  
        Reserved_fun,
        Reserved_fun,
        Reserved_fun,       
        RRDY_fun, //数据接收服务函数
        XRDY_fun  //数据发送服务函数(先保留,需要时可用)  
};       
    
main()
{
Uint16 old_intm;
writedata[0]=255;
CSL_init();
PLL_config(&pllconfig);
old_intm=IRQ_globalDisable();
I2C_setup(&i2csetup)  ;
I2C_setCallback(&addr); 
I2C_eventEnable(I2C_EVT_RRDY);
IRQ_globalEnable(); 
XRDY_fun( );
while(receivedata[0]!=255) {};
printf("I2C operation is successful\n");
IRQ_globalRestore(old_intm);
}

void XRDY_fun(void)
{
 Uint16 x;
 x=I2C_write(writedata,1,1,0x00,1,30000);//数组指针,写字节数,0从1主,从地址,S-A-D(N)-P,timeout
 if(x==0) printf("write operation is successful\n");
}

void RRDY_fun(void)
{
 //Uint16 x;
 receivedata[0]=I2C_readByte();
 //x=I2C_read(receivedata,1,0,0x00,1,30000,0);//数组指针,读字节数,0从1主,从地址,S-A-D(N)-P,timeout,checkbus
 //if(x==0) printf("read operation is successful\n");
}

void Reserved_fun(void) {return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -