LPC1788-IO模拟SPI--驱动AD7708--寄存器操作
来源:互联网 发布时间:2018-11-27 分享至微信

最近在使用AD7708采集数据-本来是想使用LPC1788自带的SSP进行控制,但是在多次实验过程中发现,单个读取寄存器是没有问题的,但是在连续读取时出现问题,一直没有解决,项目着急使用就直接用IO模拟SPI,比较简单就准确读出了数据,也没有出现上述问题,记之!

个人还是觉得是自己配置的原因,后续会继续研究SSP的控制AD7708,希望能够搞清楚!

主函数只需要调用两个函数---AD7708_Reg_Init();----AD7708_ReadAD_Data();

/*-------ad7708_spi_io.h-------------*/


#ifndef __AD7708_SPI_IO_H
#define __AD7708_SPI_IO_H

#include"lpc177x_8x.h"

#define AD7708_CS_LOW() (LPC_GPIO0->CLR |=(1<<6))
#define AD7708_CS_HIGH() (LPC_GPIO0->SET |=(1<<6))

#define AD7708_SCLK_LOW() (LPC_GPIO0->CLR |=(1<<7))
#define AD7708_SCLK_HIGH() (LPC_GPIO0->SET |=(1<<7))

#define AD7708_DIN_LOW() (LPC_GPIO0->CLR |=(1<<9))
#define AD7708_DIN_HIGH() (LPC_GPIO0->SET |=(1<<9))

#define AD7708_RESET_LOW() (LPC_GPIO0->CLR |=(1<<18))
#define AD7708_RESET_HIGH() (LPC_GPIO0->SET |=(1<<18))

#define AD7708_RDY_LOW() (((LPC_GPIO0->PIN) & (1<<17)) == 0x00)

#define AD7708_DOUT_HIGH() (((LPC_GPIO0->PIN) & (1<<8)) != 0x00)

void AD7708_Reg_Init(void);
void AD7708_Reset(void);

void AD7708_Write8Bit(uint8_t data);
uint8_t AD7708_Read8Bit(void);
uint16_t AD7708_Read16Bit(void);

uint16_t AD7708_ReadAD_Data(uint8_t Channel);

#endif


/*--------ad7708_spi_io.c------------------------*/

#include "ad7708_spi_io.h"

/*----------短延时---------*/
void AD7708_Delay(uint16_t time)
{
uint16_t i;

for(i=0;i

return (temp);
}



[ 新闻来源:互联网,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!