TM7705、TM7707使用

TM7705、TM7707使用TM7705、TM7707的硬件电路TM7705和TM7707的是PIN对PIN(管脚)兼容的,因此在硬件电路上完全兼容

TM7705、TM7707的硬件电路

      TM7705和TM7707的是PIN对PIN(管脚)兼容的,因此在硬件电路上完全兼容。
      外围电路中,TM7705和TM7707内部没有振荡器和基准电压,需要外接晶振电路和基准电路,一般接1M或者2.4576M晶振;基准电压范围为GND~VDD,一般推荐1/2的VDD, 基准电压是模拟信号的参考电压,所以基准电压要保持稳定,不波动。输入电压与放大倍数有关,输入电压范围:0 ~ (基准电压/增益倍数)。

 

 

TM7705、TM7707使用
图1 硬件电路图

 

 

 通讯时序 

     通讯上TM7705和TM7707基本相同,只是具体的指令TM7707与TM7705不同,时序上TM7707和TM7705相同,都是五线通讯但是可以通过改变程序和硬件电路连接到SPI总线上进行通讯。

TM7705、TM7707使用

TM7705、TM7707使用

void write_byte_TM7705(uchar dat1)	//将数据dat1写入TM7705
{
  uchar i;
  SCLK_TM7705=1;
  for(i=0;i<8;i++)
  {
    SCLK_TM7705=0;
	delay_us();
	if(dat1&0x80) DIN_TM7705=1;	   //先写高位
	  else        DIN_TM7705=0;
	 delay_us();
	 SCLK_TM7705=1;
	 delay_us();
	 dat1<<=1;
  }
   SCLK_TM7705=1;
   DIN_TM7705=1;
}

unsigned char read_byte_TM7705()   //从TM7705寄存器读数据
{
  uchar i,dat2=0;
  SCLK_TM7705=1;
  for(i=0;i<8;i++)
  {
    SCLK_TM7705=0;
	delay_us();
	dat2=(dat2<<1)|DOUT_TM7705;	  // 高位先读
	delay_us();
	SCLK_TM7705=1;
	delay_us();
  }
	SCLK_TM7705=1;
	return dat2;
}

       在写程序时SCLK管脚的高、低电平的延时都要大于2US,程序流程大致上电40个时钟用于软件复位,然后发寄存器配置指令,在自校准后需要200MS的延时后才能接收到有效的输出数据,且每次通道切换都要进行自校准(即每次切换都要等待200MS)。

void TM7705_init()
{
  uchar i;
  SCLK_TM7705=1;
  DIN_TM7705=1;
  DOUT_TM7705=1;
  DRDY_TM7705=1;

  for(i=0;i<40;i++)
  {
   SCLK_TM7705=0;
   delay_us();
   SCLK_TM7705=1;
   delay_us();
  }
   delay_us();
   delay_us();
 
}
void main()
{
  unsigned char n,temp1,temp2;

  UART_init();
  TM7705_init();
  delay_nms(50);

  write_byte_TM7705(0x20);  	//通道1和2共用(0 0 1 0 0 0 0 0),写通讯寄存器下一步写时钟寄存器
  write_byte_TM7705(0x04);  	//50HZ(0 0 0 0 0 1 0 0)	 若晶振为2.4576MHZ需设置CLKDIV=0,CLK=1
  //write_byte_TM7705(0x08);  	//20HZ(0 0 0 0 1 0 0 0)	 若晶振为2MHZ需设置CLKDIV=1,CLK=0
   
  while(1)
  {
     write_byte_TM7705(0x10); 	//通道1(0 0 0 1 0 0 0 0),写通讯寄存器下一步写设置寄存器
   //write_byte_TM7705(0x44);	//写入设置寄存器(0 1 0 0 0 1 0 0),自校准模式0 1,1倍增益0 0 0,单极性B/U=1,buf串联设置为0,FSYNC=0;
   //write_byte_TM7705(0x40);	   //写入设置寄存器(0 1 0 0 0 0 0 0),自校准模式0 1,1倍增益0 0 0,双极性B/U=0,buf串联设置为0,FSYNC=0;
   write_byte_TM7705(0x58);	   //写入设置寄存器(0 1 0 0 0 0 0 0),自校准模式0 1,16倍增益0 0 0,双极性B/U=0,buf串联设置为0,FSYNC=0;
   delay_nms(200);
   for(n=0;n<6;n++)
   {
       write_byte_TM7705(0x38);	//读通道1
       while(DRDY_TM7705==1);
       delay_nms(1);
       temp1=read_byte_TM7705();  //先读高8位
       temp2=read_byte_TM7705();  //再读低8位
       delay_nms(10);
   }
 write_byte_TM7705(0x11); 	//通道2(0 0 0 1 0 0 0 1),写通讯寄存器下一步写设置寄存器
   //Write_byte_TM7705(0x44);	//写入设置寄存器(0 1 0 0 0 1 0 0)自校准模式0 1,1倍增益0 0 0,单极性B/U=1,buf串联设置为0,FSYNC=0;
   write_byte_TM7705(0x40);	   //写入设置寄存器(0 1 0 0 0 0 0 0),自校准模式0 1,1倍增益0 0 0,双极性B/U=0,buf串联设置为0,FSYNC=0;
   delay_nms(200);
   for(n=0;n<6;n++)
   {
       write_byte_TM7705(0x39);	//读通道2
       while(DRDY_TM7705==1);
       delay_nms(1);
       temp1=read_byte_TM7705();	//先读高8位
       temp2=read_byte_TM7705();	//再读低8位
       delay_nms(10);
   }
  }
}

输出的电压转换

    TM7705、TM7707输出的都是16进制的数据,需要转换后才能得到有效的电压值

TM7705、TM7707使用
单极性公式

 

 

TM7705、TM7707使用
双极性公式

今天的文章TM7705、TM7707使用分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/69050.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注