历史上的今天
返回首页

历史上的今天

今天是:2024年11月11日(星期一)

正在发生

2019年11月11日 | dsPIC30F6015控制AD7715程序源码 亲测可用

2019-11-11 来源:51hei

这是我写的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);

……………………


推荐阅读

史海拾趣

American Power Management Inc公司的发展小趣事

为了进一步提升竞争力,APMI开始实施国际化发展战略。公司积极开拓海外市场,与国际知名电子制造商建立合作关系。同时,APMI还加强了与国际同行的技术交流与合作,吸收借鉴先进的管理经验和技术成果。通过国际化发展,APMI不仅拓宽了市场渠道,还提升了公司的国际影响力。

正泰公司的发展小趣事

为了吸引和留住优秀人才,正泰公司实施了股权激励计划。公司创始人南存辉为了推动公司从“家族企业”向“集团企业”过渡,坚决开展“股权配送”,让更多优秀人才得到股权激励。这一举措不仅激发了员工的积极性,也促进了公司的快速发展。同时,公司还注重人才培养,鼓励员工参加各类培训和学习,提升个人能力和素质。

Fabrimex AG公司的发展小趣事

1979年,Fabrimex AG接管了ARCO-Solar(美国)的代表处,标志着公司正式进入光伏领域。这一举措为公司带来了新的增长点,并推动了相关产品的研发和生产。随着光伏技术的不断发展,Fabrimex AG在光伏领域逐渐取得了显著的成绩,为公司带来了可观的收益。

全志(Allwinner)公司的发展小趣事

全志科技在早期以电源管理IC AXP系列和多媒体解码F系列芯片为核心技术,成功挖掘了第一桶金。特别是在播放器等中小企业需求市场中,全志的产品获得了广泛认可。这种对市场需求的敏锐洞察和扎实的技术研发能力,使得全志在激烈的市场竞争中脱颖而出。

Celduc Relais公司的发展小趣事

随着公司实力的不断增强,Celduc Relais开始积极拓展国际市场。公司通过参加国际电子展会、建立海外销售渠道以及与当地合作伙伴建立战略合作关系等方式,逐步打开了欧洲、北美和亚洲等多个国家和地区的市场。这一过程中,公司不仅提升了品牌知名度,也积累了丰富的国际业务经验。

常州能动(ENDRIVE)公司的发展小趣事

为了确保产品质量和客户满意度,常州能动不断完善质量管理体系。公司引进了国际先进的质量管理方法,建立了严格的质量检测流程。同时,公司还加大了对生产设备的投入,引进了先进的生产设备和技术,提高了生产效率和产品质量。这些努力使得常州能动的产品质量得到了客户的高度认可。

问答坊 | AI 解惑

想请教下,目前在学校、小区等用的多的摄像机牌子有哪些?

设计方案需要,可本人缺乏经验,想请教高人,目前在学校、小区等用的多的摄像机牌子有哪些?当然,经济实用的最好了。…

查看全部问答>

loadcell如何测量它的好坏?

怎么用电阻量啊?我单位的loadcell是梅特勒托利多的 和开创的,传感器传输的是数据TX+,TX-,RX+,RX-等。据说要通过测量频率来判断是否好的还是坏的。是吗?…

查看全部问答>

初学射频,请问基站的工作做啥?

今天下午闲来无事,在网上找了一些资料,贡献给坛子里的朋友。 想请教下:基站的工作,咱电子工程师都可以做啥? 请大家指点。…

查看全部问答>

专业方向求助中

我们现在大二,学校让选专业方向,有嵌入式和J2EE两种,选哪种会好点儿呢,大虾给点儿建议!谢谢…

查看全部问答>

CE60下的模拟器SDK的NK能不能直接用新版本去替换而用不着每次更新NK就得编译新SDK,卸载老SDK再重新装新SDK.这样用模拟器太不方便了.

CE60下的模拟器SDK的NK能不能直接用新版本去替换而用不着每次更新NK就得编译新SDK,卸载老SDK再重新装新SDK.这样用模拟器太不方便了.…

查看全部问答>

救助 用VHDL 设计一个指令寄存器 紧急 谢谢

救助 用VHDL  设计一个指令寄存器  紧急 谢谢  大家新年快乐哈…

查看全部问答>

写好嵌入式实时OS核,寻找合作开发产品

自己写了个嵌入式实时OS核,取名LOS,即Learn  Operate System。LOS是应用于工业控制领域和车载设备中的可剪裁的嵌入式实时操作系统。      LOS具有的功能目录如下:      1   任 ...…

查看全部问答>

wince windows mobile如何用c++实现通信,这个如何操作,包括与服务器的配置?

wince windows mobile如何用c++实现通信,这个如何操作,包括与服务器的配置?…

查看全部问答>

请问谁有在evc平台上实现“打电话”的程序例子

我要放到windows mobile上面跑起来,最好还能有获取通讯录的功能,我不太清楚这里面的流程。谢谢各位大虾!…

查看全部问答>

新人弱弱的问题:单片机仿真器与开发板的区别?

我是新来的,什么都不懂,请教下各位大虾单片机仿真器与开发板的区别,各有什么功能.谢谢!…

查看全部问答>