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  源码 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479592.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

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

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

dsPIC30F6014 CAN总线发送功能+DS18B20温度采集
1。DS18B20定时采集温度2。温度采集时间间隔用T1定时器控制3。采集到的温度通过CAN总线送另一主机处理#include <p30f6014.h>             //dsPIC30F6014标准头文件  _FOSC(0x0ffe5);                 //4倍频晶振,Failsafe 时钟关闭  _FWDT(WDT_OFF);              
发表于 2019-11-09
dsPIC33F串口通讯中断接收发送数据UART
/* 功能描述: 串行通讯程序,DSP中断收到8个数据后,将收到的8个数 据以中断发送方式返送回发送方。 * */ #include "p30f6014.h" //ds30f6014头文件 unsigned int receive[8]; // 接收数据数组 unsigned int send[8]; // 发送数据数组 unsigned int receive_count=0; // 接收数据个数计数 unsigned int send_count=0; // 发送数据个数计数 unsigned int *pointer; // 发送指针
发表于 2016-06-14
基于dsPIC30F的脉冲氙灯驱动系统
脉冲氙灯的驱动系统。本文设计了满足脉冲氙灯工作时的起辉、预燃和高压放电三个阶段的驱动系统。脉冲氙灯驱动系统采用Microchip dsPIC30F为主控芯片。该芯片是一款将单片机与DSP技术相结合的高性能16位数字信号控制器,综合了单片机(MCU)的控制功能和集成了多种外设的优点,以及数字信号处理器(DSP)的计算能力和数据处理吞吐能力[2]。此外,它在异常事件处理,软件开发环境等方面也表现出强大的性能[3]。由于dsPIC30F芯片的内部资源丰富,基于dsPIC30F平台开发的脉冲氙灯驱动系统需要的外设很少,不但系统的抗干扰性和可靠性能够满足脉冲氙灯在各种环境下运行的要求,而且可以提高系统的灵活性,缩短开发时间,降低开发
发表于 2014-11-20
基于dsPIC30F的脉冲氙灯驱动系统
基于CAN的远程下载技术开发及应用
极少的存储空间,可以位于单片机程序存储器特定的Boot Segment 区域。程序存储器还有一段称为General Segment 区域可用于存储用户应用程序。单片机的程序存储器大多都是FLASH 闪存,数据是以一个个数据页的形式存储,必须先对当前存储页擦除,然后才能写入数据。自举程序还需使用dsPIC33 单片机器件中断向量表 (IVT) 中的复位向量实现程序的跳转、以及器件上的CAN 通信模块。单片机的程序存储器的地址映射如下图4 所示。dsPIC33F 程序存储器地址映射图图 4 dsPIC33F 程序存储器地址映射图上图给出了dsPIC33 单片机器件的程序存储器的物理地址映射,由图可知用户应用代码应放置在用户应用程序地址段
发表于 2014-11-03
基于CAN的远程下载技术开发及应用
dsPIC3F3013的CAN总线数据采集系统
构成:控制部分,包括前端信号的抗混叠滤波器和用于信号采集的12位模数转换器;CAN总线接口电路部分,由MCP2515 CAN协议控制器和MCP2551高速CAN收发器构成。系统接3路信号,TEM、PRE、RH分别为温度、气压、相对湿度。   1.1 控制部分   dsPIC30F3013是Microchip公司生产的传感器系列数字信号控制器。该控制器采用16位(数据)改良的哈佛结构,并带有增强型指令集,包含对DSP的有力支持。工作速度最高可达30MIPS,内部集成10通道12位模数转换器,最大转换速度为200 ksps。   工控系统中,由于各类噪声的存在,需要在信号采集端加上抗混叠滤波电路,如图2所示。  
发表于 2014-10-22
dsPIC3F3013的CAN总线数据采集系统
AVR PCF8591 AD&DA数码管显示
#include "iom16v.h"#include "macros.h"#define uchar unsigned char#define uint unsigned int/*******************************************TWSR中数据的各种状态,#include"iom16v.h"#include "macros.h"#define uchar unsigned char#define uint unsigned int/*******************************************
发表于 2019-11-11
小广播
何立民专栏 单片机及嵌入式宝典

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

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