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

📄 test.c

📁 MSP430F449单片机测试小程序
💻 C
字号:
//用SPI读写AD7705,P4.2 STE1, P4.3 SIMO, P4.4 SOMI, P4.5 UCLK1, P4.6 DRDY
/*  
AD7705寄存器  
1:通信寄存器  
DRDY  RS2  RS1  RS0  R/W   STBY   CH1  CH0  
DRDY:写操作时此位为0。  
RS2、RS1、RS0:选择寄存器。000:通信寄存器; 001:设置寄存器; 010:时钟寄存器。  
R/W:0写操作;  1读操作.  
STBY:等待模式。0正常工作模式.  
CH1 CH0:通道选择。  
  
2:设置寄存器  
   MD1  MD0  G2 G1 G0 B/U BUF FSYNC  
MD1 MD0:校准模式选择。00正常模式; 01自校准模式; 10 零刻度校准模式; 11全刻度校准模式.  
G2 G1 G0:增益选择位。  
B/U:单极性与双极性选择。0双极,1单极。  
BUF:缓冲。1缓冲,0无缓冲。  
FSYNC:同步过滤器。  
  
3:时钟寄存器  
   ZER0  ZER0  ZER0  CLKDIS  CLKDIV  CLK  FS1  FS0  
ZER0:0必须写进该位,才能保证7705的运转正确。  
CLKDIS:主时钟禁止位。"1"禁止MCLKOUT脚输出。  
CLKDIV:时钟分频位。"1"主时钟二频; "0"不分频。  
CLK:时钟位。2.4576M/4.9152M时对应CLK=1;1M/2M时对应CLK=0.  
FS0 FS1:数据刷新选择位。应与CLK结合来决定数据刷新速度。  
*/   
#include<msp430x44x.h>

void init_SPI(void)
{
  P4SEL|=0x38;                      //P4.3~5置位外围模块
  P4DIR|=0x04;                      //P4.2输出模式
  P4DIR&=0x40;                      //P4.6输入模式
  ME2|=USPIE1;                      // 使能 USART0 SPI 模式
  UTCTL1=CKPH+SSEL1+SSEL0+STC ;     // 设置 SMCLK 和 3-pin 模式;
  UCTL1=CHAR+SYNC+MM;              //设置 8-bit 字符模式
  UBR01=0x02;                      //设置波特率
  UBR11=0x00;
  UMCTL1=0x00;                     //波特率调整
  IE2|=URXIE1;                     //使能接受中断
  IFG2=0x00;                       //接受中断标志位清零
}

//将一个字节倒序的函数
unsigned char rearrange(unsigned char a) 
{ 
  unsigned char j;
  unsigned char b;  
  b=a&0x01;
  for(j=1;j<8;j++)     
   {
    b=b<<1;
    a=a>>1;
    b=b+(a&0x01); 
   }   
  return b;  
}

void send(unsigned char a)//向AD7705 写入一个字节的函数
{
  TXBUF1=a;
  while((UTCTL1&0x01)!=0x01);     //等待直到没有数据发送
}

unsigned int readword(void)    //从AD7705 读出两个字节的函数
{ 
  unsigned char high8=0;
  unsigned char low8=0;
  unsigned int out=0;
  P4DIR&=0x40;
  while((P4IN&0x40)==0x00);
  while(!IFG2);
  high8=RXBUF1;
  while(!IFG2);
  low8=RXBUF1;
  out=rearrange(high8);
  out=out<<8;
  out=out+rearrange(low8);
  return out;
}

//对采样通道的初始化函数, 所有的控制数据均已倒序            
void main(void)
{ 
  WDTCTL=WDTHOLD+WDTPW;
  init_SPI();
  send(0x04);
  send(0xf0);
  send(0x08);
  send(0x62);
}



⌨️ 快捷键说明

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