SPI读铁电RFID单总线18B20I2C读时钟.docx

上传人:b****5 文档编号:6439713 上传时间:2023-01-06 格式:DOCX 页数:38 大小:24.94KB
下载 相关 举报
SPI读铁电RFID单总线18B20I2C读时钟.docx_第1页
第1页 / 共38页
SPI读铁电RFID单总线18B20I2C读时钟.docx_第2页
第2页 / 共38页
SPI读铁电RFID单总线18B20I2C读时钟.docx_第3页
第3页 / 共38页
SPI读铁电RFID单总线18B20I2C读时钟.docx_第4页
第4页 / 共38页
SPI读铁电RFID单总线18B20I2C读时钟.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

SPI读铁电RFID单总线18B20I2C读时钟.docx

《SPI读铁电RFID单总线18B20I2C读时钟.docx》由会员分享,可在线阅读,更多相关《SPI读铁电RFID单总线18B20I2C读时钟.docx(38页珍藏版)》请在冰豆网上搜索。

SPI读铁电RFID单总线18B20I2C读时钟.docx

SPI读铁电RFID单总线18B20I2C读时钟

【MP430共享】冒死分享公司内部源码库(SPI读铁电,RFID,单总线18B20,I2C读时钟等)

冒死分享公司项目外设驱动代码(SPI读取铁电,RFID驱动,单总线18B20,I2C读SD2000时钟等),绝对的实用,做产品必备,进来的请回帖支持一下

 

第一个读取铁电的代码:

//对铁电的操作不采用中断的方式,而是在需要对数据进行存储或读取时,采用查询中断标志位。

/***************************************************

*函数名称:

FM_init

*功能描述:

对铁电进行初始化,包括对于之接口的单片机SPI口的初始化

*入口参数:

*出口参数:

***************************************************/

voidFM_init(void)

{

 UCB2CTL1|=UCSWRST;//先对此位置1

 UCB2CTL0=UCCKPH+UCMSB+UCMST+UCSYNC;//模式3,MSBfirst,8-bitdata,Mastermode,3-pinSPI,Synchronousmode

 UCB2CTL1|=UCSSEL_2;//SMCLK作为SPI的时钟

 UCB2BR0=0x01;//SPI采用16M的辅助主时钟

 UCB2BR1=0x00;

 UCB2CTL1&=~UCSWRST;//清零

}

/***************************************************

*函数名称:

Fram_Read_char

*功能描述:

读取铁电的内容,返回一个8位的数

*入口参数:

pab铁电的地址

*出口参数:

返回一个char型数据

***************************************************/

unsignedcharFM_read_char(unsignedintpab)

{

 unsignedcharj,k=0;

 j=(unsignedchar)pab;

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x03;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)(pab>>8);//当数据写入TXBUF后,UCTXIFG标志自动清零;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=0;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 k=UCB2RXBUF;

 FM_CS_1;    //不选中铁电

 returnk;

}

/***************************************************

*函数名称:

Fram_Read_int

*功能描述:

读取铁电的内容,返回一个16位的数

*入口参数:

pab铁电的地址

*出口参数:

返回一个int型数据

***************************************************/

unsignedintFM_read_int(unsignedintpab)

{

 unsignedcharj;

 unsignedintt;

 j=(unsignedchar)pab;

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x03;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)(pab>>8);//当数据写入TXBUF后,UCTXIFG标志自动清零;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=0;

 while((UCB2STAT&UCBUSY)==1);//等待发送完成标志的产生

 j=UCB2RXBUF;

 UCB2TXBUF=0;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 t=UCB2RXBUF;

 t<<=8;

 t|=j;

 FM_CS_1;    //不选中铁电

 returnt;

}

/***************************************************

*函数名称:

FM_write_char

*功能描述:

向铁电写入一个8位的数据

*入口参数:

pab铁电的地址,date:

写入的数据

*出口参数:

***************************************************/

voidFM_write_char(unsignedintpab,unsignedchardate)

{

 unsignedcharj;

 j=(unsignedchar)pab;

 //_DINT();

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 UCB2TXBUF=(unsignedchar)(pab>>8);//i;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=date;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 //_EINT();

}

/***************************************************

*函数名称:

FM_write_int

*功能描述:

向铁电写入一个16位的数据

*入口参数:

pab铁电的地址,date:

写入的数据

*出口参数:

***************************************************/

voidFM_write_int(unsignedintpab,unsignedintdate)

{

 unsignedcharj;

 j=(unsignedchar)pab;

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 UCB2TXBUF=(unsignedchar)(pab>>8);//i;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 j=(unsignedchar)(date>>8);

 UCB2TXBUF=(unsignedchar)date;//j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

}

/***************************************************

*函数名称:

tx_write_int

*功能描述:

向铁电写入一个8位的数据

*入口参数:

pab铁电的地址,date:

写入的数据

*出口参数:

***************************************************/

voidtx_write_int(unsignedintpab,unsignedintdate)

{

 unsignedcharj;

 j=(unsignedchar)pab;

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 UCB2TXBUF=(unsignedchar)(pab>>8);//i;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 j=(unsignedchar)(date>>8);

 UCB2TXBUF=(unsignedchar)date;//j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

}

/***************************************************

*函数名称:

FM_write_jg_tou_gs

*功能描述:

向铁电写入结构头的个数

*入口参数:

*出口参数:

***************************************************/

voidFM_write_jg_tou_gs(void)

{

  //_DINT();

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 UCB2TXBUF=0;//i;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=10;//10;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=0x5a;

 while((UCB2IFG&UCTXIFG)==0);   

 UCB2TXBUF=id_jg.gs;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

}

/***************************************************

*函数名称:

FM_write_bt

*功能描述:

向铁电写入表头,

*入口参数:

pab:

表头的起始地址,djg:

第几个表头,0表示第一个

*出口参数:

***************************************************/

voidFM_write_bt(unsignedintpab,unsignedintdjg)

{

  unsignedcharj;

 j=(unsignedchar)pab;

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 UCB2TXBUF=(unsignedchar)(pab>>8);//i;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=j;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 

  UCB2TXBUF=id_jg.lbt[djg].year;

  while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=id_jg.lbt[djg].month;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=id_jg.lbt[djg].day;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=id_jg.lbt[djg].hour;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)id_jg.lbt[djg].hour_id_gs;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)(id_jg.lbt[djg].hour_id_gs>>8);

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)id_jg.lbt[djg].hour_td_begin;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)(id_jg.lbt[djg].hour_td_begin>>8);

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 

 UCB2TXBUF=(unsignedchar)id_jg.lbt[djg].hour_tx_tran_ok_gs;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 UCB2TXBUF=(unsignedchar)(id_jg.lbt[djg].hour_tx_tran_ok_gs>>8);

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

}

/***************************************************

*函数名称:

FM_clr0_32768

*功能描述:

清除铁电中的所有数据

*入口参数:

*出口参数:

***************************************************/

voidFM_clr0_32768(void)

 {

 unsignedinti;

 //_DINT();

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 //////////////////

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 for(i=0;i<32768;i++)

 {

  UCB2TXBUF=0;//(unsignedchar)pab;

 while((UCB2IFG&UCTXIFG)==0);//等待发送完成标志的产生

 }

 while((UCB2STAT&UCBUSY)==1);//等待SPI不忙

 FM_CS_1;    //不选中铁电

 }

/***************************************************

*函数名称:

FM_read_bt

*功能描述:

读取铁电中的相关信息参数

*入口参数:

*出口参数:

***************************************************/

voidFM_read_bt(void)

{

 unsignedchari,j;//,k=0;

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB0TXBUF=0x03;

 while((UCB2IFG&UCTXIFG)==0); 

 UCB2TXBUF=0;//

 while((UCB2IFG&UCTXIFG)==0);

 UCB2TXBUF=12;

 while((UCB2IFG&UCTXIFG)==0);

 for(i=0;i<24;i++)//macheng连续性的把所有参数全部读取出来

 {   

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   id_jg.lbt.year=UCB0RXBUF;

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   id_jg.lbt.month=UCB0RXBUF;

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   id_jg.lbt.day=UCB0RXBUF;

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   id_jg.lbt.hour=UCB0RXBUF;

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   j=UCB2RXBUF;

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   id_jg.lbt.hour_id_gs=UCB2RXBUF;

   id_jg.lbt.hour_id_gs<<=8;

   id_jg.lbt.hour_id_gs|=j;

   UCB2TXBUF=0;

   while((UCB0STAT&UCBUSY)==1);

   j=UCB2RXBUF;

    UCB2TXBUF=0;

   while((UCB0STAT&UCBUSY)==1);

   id_jg.lbt.hour_td_begin=UCB0RXBUF;

   id_jg.lbt.hour_td_begin<<=8;

   id_jg.lbt.hour_td_begin|=j;

   UCB0TXBUF=0;

   while((UCB0STAT&UCBUSY)==1);

   j=UCB2RXBUF;

   UCB2TXBUF=0;

   while((UCB2STAT&UCBUSY)==1);

   id_jg.lbt.hour_tx_tran_ok_gs=UCB2RXBUF;

   id_jg.lbt.hour_tx_tran_ok_gs<<=8;

   id_jg.lbt.hour_tx_tran_ok_gs|=j;

 }

 FM_CS_1;    //不选中铁电

}

/***************************************************

*函数名称:

write_clr10_32768

*功能描述:

把铁电中从第十字节开始到32768字节结束的内容清除

*入口参数:

*出口参数:

***************************************************/

voidwrite_clr10_32768(void)

{

 unsignedinti;

 //_DINT();

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x06;

 while((UCB2IFG&UCTXIFG)==0);

 FM_CS_1;//不选中铁电    

 //////////////////

 FM_CS_0;//选中铁电

 FM_WP_1;//不进行写保护

 UCB2TXBUF=0x02;

 while((UCB2STAT&UCBUSY)==1);

 UCB2TXBUF=0;//(unsignedchar)(pab>>8);

 while((UCB2IFG&UCTXIFG)==0);

 UCB2TXBUF=10;//(unsignedchar)pab;

 while((UCB2STAT&UCBUSY)==1) WDTCTL=WDTPW+WDTCNTCL+WDTSSEL_1;

 for(i=10;i<32768;i++)

 {

  UCB2TXBUF=0;//(unsignedchar)pab;

  while((UCB2IFG&UCTXIFG)==0);

 }

  WDTCTL=WDTPW+WDTCNTCL+WDTSSEL_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1