dsPIC30F6015控制AD7715程序源码 亲测可用

发布者:万童洁最新更新时间:2019-11-11 来源: 51hei关键字:dsPIC30F6015  AD7715  源码 手机看文章 扫描二维码
随时随地手机看文章

这是我写的dsPIC30F6015控制AD7715程序,亲测可用

单片机源程序如下:

#include

_FOSC(CSW_FSCM_OFF & XT_PLL4);

_FWDT(WDT_OFF);

#define uchar unsigned char

#define uint unsigned int  

#define CS_A          LATCbits.LATC13 //RC13输出

#define DRDY                PORTDbits.RD10 //RD10输入

uint result;



void delay_ms(uint x) //延时程序 10M晶振  0.1us

{

        uint a,b;

        for(a=x;a>0;a--)

                for(b=2500;b>0;b--);




void Init_PORT(void)

{

        // TRISFbits.TRISF4 =0;  //报警信号输出  

  //U2MODEbits.UARTEN=0;  //禁止串口

  TRISGbits.TRISG6=0; //  SCK

  TRISGbits.TRISG7=1; //  SDI

  TRISGbits.TRISG8=0; //  SDO

  TRISDbits.TRISD10=1;// DRDY

  TRISCbits.TRISC13=0;// CS_A

}



//--------------------------------------------------------------------------------------------------

// 函数名称: Init_SPI2()

// 函数功能: 初始化设置SPI2

// 入口参数: 无

// 返回值:无

//--------------------------------------------------------------------------------------------------

void Init_SPI2()

{

        SPI2BUF=0;        //数据寄存器清0

        IFS1bits.SPI2IF=0;//清中断标志

        IEC1bits.SPI2IE=0;//关闭中断

        IPC6bits.SPI2IP=2;//中断优先级为2


  SPI2STATbits.SPIEN=0; //禁止SPI2

  SPI2CONbits.PPRE = 1;//主分频比16:1

        SPI2CONbits.SPRE = 4;//预分频比4:1  SCk=10M/(16*4)

  SPI2CONbits.FRMEN = 0; //禁止帧SPI支持

  SPI2CONbits.DISSDO = 0; //使用SDO2引脚

        SPI2CONbits.MODE16 = 0; //8位通讯

  SPI2CONbits.SMP = 0; //中间采样输入数据

  SPI2CONbits.CKE = 0; //由空闲转为工作状态时输出数据

  SPI2CONbits.CKP = 1;  //空闲状态为高电平

  SPI2CONbits.MSTEN = 1; //主模式

  SPI2CONbits.SSEN = 0; //不使用SS2引脚

  

  SPI2STATbits.SPISIDL = 0; //空闲模式下继续工作

        SPI2STATbits.SPIROV = 0; //未溢出 

        SPI2STATbits.SPIEN = 1; //使能SPI2

}



void Init_Uart2()

{          

         U2BRG=10;// set baudrate 56000BPS        

  U2MODE =0x8000 ;//8位数据、无校验、一个停止位

                IEC1bits.U2RXIE = 1;

  IPC6bits.U2RXIP = 5;// UART1接收器中断优先级位        

  IFS1bits.U2RXIF=0;

         IEC1bits.U2TXIE = 0;

         IPC6bits.U2TXIP = 6;

                U2STAbits.UTXISEL = 0;

                U2STAbits.UTXBRK  = 0;

                U2STAbits.UTXBF          = 0;        

                U2STAbits.URXISEL = 0;

                U2STAbits.ADDEN          = 0;

                U2STAbits.UTXEN = 1;

}


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

*         函数名称:UART2_Send()

*        串口2发送子函数

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

void UART2_Send(unsigned char data)

{

    U2TXREG=data;

    while(IFS1bits.U2TXIF==0);

    IFS1bits.U2TXIF=0;

}




//--------------------------------------------------------------------------------------------------

// 函数名称: AD_write()

// 入口参数: commuCFG通讯寄存器控制字

// 出口参数: 无

// 函数功能: 写AD7715

//--------------------------------------------------------------------------------------------------

void AD_write(unsigned char data)

{

        unsigned char temp;

  CS_A=0;

  Nop();

  SPI2BUF=data;

  while(IFS1bits.SPI2IF==0);

  IFS1bits.SPI2IF=0;

  temp=SPI2BUF;

  CS_A=1;

  Nop();

}



uint read_from_ad7715()//读AD7715 二个字节

{

        uchar read_h,read_l;

  uint AD;

  while(DRDY);

        CS_A=0;

  Nop();

  SPI2BUF=0xff;

  while(IFS1bits.SPI2IF==0);

  IFS1bits.SPI2IF=0;

  read_h=SPI2BUF;

  Nop();

  SPI2BUF=0xff;

  while(IFS1bits.SPI2IF==0);

  IFS1bits.SPI2IF=0;

  read_l=SPI2BUF;

  AD=(read_h<<8)+read_l ;

  CS_A=1;

        return (AD); 

}


int main(void)

{        

  Power_Management();

  Init_PORT();

  Init_SPI2();

  Init_Uart2();

  AD_write(0x10); //设定寄存器,写模式  增益为1  

  AD_write(0x6C);        //设置SetReg,单端,60hz 自校验方式 时钟2.4576MHz 输入不加缓冲 

  while(1)

  {   

    while(DRDY);  //等待AD7715提供可读的数据  

    AD_write(0x38);

    Nop();

    result=read_from_ad7715();

    UART2_Send(result>>8);

……………………


关键字:dsPIC30F6015  AD7715  源码 引用地址:dsPIC30F6015控制AD7715程序源码 亲测可用

上一篇:PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
下一篇:直流有刷伺服控制系统(pic单片机,pid控制)

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved