主题中讨论的其他部件: MSP430F5528, ADS1220, MSP430F149
大家好,我尝试将ADS1218与MSP430配合使用。 但是,我找不到ADS1218的任何代码示例。 是否有人可以将代码发布或发送到我的电子邮件(wt2009.4324万@1563.com)1563.)? 非常感谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好,我尝试将ADS1218与MSP430配合使用。 但是,我找不到ADS1218的任何代码示例。 是否有人可以将代码发布或发送到我的电子邮件(wt2009.4324万@1563.com)1563.)? 非常感谢。
您好,用户490.8522万,
遗憾的是,我们没有用于ADS1218的MSP430示例代码。 尽管该项目适用于不同的处理器,但在该项目的某些部分中可能会有一些有用的代码来帮助您入门:
https://e2e.ti.com/support/data_converters/precision_data_converters/w/design_notes/ads1216
下面的链接用于介绍MSP430F5528 MSP430外设的使用和设置的ADS1220示例代码。 这可能有助于了解SPI通信的设备设置。
此致,
Bob B
Bob,您好!
很抱歉再次打扰你。 最近,我开始使用MSP430F149测试ADS1218。 但是 ,ADC不起作用。 我配置ADC设置寄存器并将电压参考电压设置为1.25V。 但电压参考输出始终为2.5V。 我发现SPI在发送命令时使用示波器观察DOUT,DIN,SCLK,CS线,工作良好。 ADC的电源为3V。 ADC的POL引脚设置为高电平。 和下面的SPI程序和ADC配置程序列表。 您能否就这个问题提供一些建议,非常感谢。
//**** SPI初始化代码******* //
#include <msp430x14x.h>
#include "SPI.h"
void SPI_Init()
{
//将引脚设置为USART端口
P3sel|=BIT1+BIT2+BIT3;
//停止USART
UCTL0|=SWRST;
// 8位模式,SPI主控
UCTL0|=char+sync+mm;
//将SMCLK作为USART时钟,在此程序中,SMCLK=1MHz
UTCTL0|=SSEL1;
//设置SCLK=100kHz
UBR00=0x0A;
UBR10=0x00;
//在SPI主模式下禁用UMCTL0
UMCTL0=0x00;
// 3线SPI
UTCTL0|=STC;
//配置SCLK相位和极性,01
UTCTL0&=~(TKPH);
UTCTL0|=CKPL;
//启用USART模块
U0ME=USPIE0;
UCTL0&=~SWRST;
//启用传输和接收中断
IE1|=URXIE0+UTXIE0; //使能发送和接收中断
}
//******** ADS1218初始化和配置代码******* //
//
// MSP430F149
// -----------------------
// | |
// | |
// | WFP 3.6 |<--DRDY
// | |
// | WFP 3.3 |-->SCLK.
// | |
// | WFP 3.2 |<--SOMI (DOUT)
// | |
// | WFP 3.1 |<--SIMO (DIN)
// | |
// | WFP 3.0 |-->CS
// | |
// | |
// -----------------------
//
//
//
// 日期:2017/09/26
#include <msp430x14x.h>
包含"ADS1218.h"
包含"delay.h"
void ADS1218_Init()
{
ADS1218_CSHigh; //禁用ADS1218
P3DIR|=BIT0; // ADS1218的CS引脚
P3DIR&=~BIT6; // ADS1218的DRDY引脚
}
void ADS1218_Config()
{
无符号char Temp;
TEMP=ADS1218P0|ADS1218NCOM;</s>1218
ADS1218_WRReg (ASD1218_MUX,0x01,&Temp);//chosse channel AIN0-Acom
TEMP=REFEN; // IRV=1.25V,FMod=fosc/128,Buffer Disabled,MSB transmitted first
temp&=~REFHI;
ADS1218_WRReg (ADS1218_Setup,0x01& Temp);
temp=ADS1218PGA1;
ADS1218_WRReg (ADS1218_ACR,0x01& Temp);
temp=SMODE3|Ub|0x03; //选择sinc3过滤器,非生物聚合物数据格式,小数高3位
ADS1218_WRReg (ADS1218_DEC1,0x01,&Temp);
temp=0xFF;
ADS1218_WRReg (ADS1218_DEC0,0x01,&Temp);
}
void ADS1218_WRReg (unsigned char StartAddress,unsigned char NumReg,unsigned char *pData)
{
无符号字符I;
ADS1218_CSLow;
ADS1218_Send(WREG|(StartAddress&0x0F));
ADS1218_Send((NumReg-1)&0x0F);
用于(i=0;i<NumReg;i++)
{
ADS1218_Send(*pData+);
}
ADS1218_CSHigh;
}
void ADS1218_Send(无符号CHAR数据)
{
无符号char伪;
同时(!UTXIFG0);
TXBUF0=数据;
while (!URXIFG0);
虚拟=RXBUF0;
// SCLK频率延迟8次
DELAY _Us (80);
}
//******** ADS1218和MSP430F149*********的电路图 //
您好,用户490.8522万,
您提供了许多有用的信息。 但是,在通信方面,我可以实际看到示波器的通信镜头逻辑分析仪,尤其是CS,SCLK,DIN和DOUT。 在整个通信事务中,CS必须保持低电平并保持低电平。 根据信息,ADS1218似乎没有对通信作出响应。 首先要首先读取寄存器,以查看是否获得默认的通电值。 您还需要检查到ADS1218的所有电源连接是否有效(包括模拟和数字电源), 并且RESET ,PDWN,DSYNC引脚 为高电压。 此外,您必须具有有效的时钟,因此请验证 晶体是否真正振荡。
此致,
Bob B
Bob,您好!
非常感谢您耐心回答。 我发现这种奇怪现象的原因。 由于电源由PCB板中的MSP430数字IO控制,因此在为ADC通电后,它需要等待一些微感应器来写入和读取ADC。 最后的代码结构如下所示,然后ADC工作正常。
包含"I2C.h"
#include "SPI.h"
包含"ADS1218.h"
//#包括"MyChar.h"
uchar dFlag=0;
void main()
{
UCHAR I;
长数据;
WDT_Init();
Clock_Init();
Port_Init();
Timer_Init();
SPI_Init();
ADS1218_Init();//为ADC启用电源,配置DRDY引脚,禁用CS
delay_ms(600);
ADS1218_Config();
.....
此致!