Thread 中讨论的其他器件:、 ADS1261
您好!
我已成功安装驱动程序和 GUI 软件。 我可以看到显示 Hardware Connected、但中未显示默认寄存器设置。 我使用默认跳线设置和 S1 -5V。
请帮我 解决这个问题。
谢谢、
Ravi Kumar
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.
您好!
我已成功安装驱动程序和 GUI 软件。 我可以看到显示 Hardware Connected、但中未显示默认寄存器设置。 我使用默认跳线设置和 S1 -5V。
请帮我 解决这个问题。
谢谢、
Ravi Kumar
尊敬的 Ravi:
我很高兴听到您取得了进展。 请务必查看 《ADS1261EVM 用户指南》中的材料。 对于控制台选项卡、默认情况下将其关闭。 有关"Console"选项卡的信息、请参阅 第8节中的《Δ-Σ ADC 评估软件用户手册》。 要启用选项卡,请转至 Options -> General 菜单并在其中启用。
要收集数据并查看转换结果、您需要使用"数据分析"。 软件用户手册的第9节介绍了该工具。
此致、
Bob B
尊敬的 Ravi:
我强烈建议阅读软件和 EVM 用户指南以了解 EVM 和 GUI 的操作。 有些 ADC 具有同步转换器、其中将显示多个转换、但 ADS1261不是其中之一。 您还将在 ADS1261数据表中看到、虽然 ADS1261具有许多输入和组合、但只有一个 ADC 可通过 ADC 前的输入多路复用器进行转换。 因此、ADS1261一次只能转换一个选定的输入通道、因此只显示一个结果。 此外、'ADC0'指示器与所选输入通道无关。 这只是固件到 GUI 的一个指示器、指示仅返回一个称为"ADC0"的通道数据集。 无论在多路复用器上选择何种输入、数据都将始终以'ADC0'的形式返回。
Data Inspector 选项卡仅显示从 ADC 返回的结果代码。 可以将数据视为十进制或十六进制。 Time Domain (时域)选项卡将以代码或电压显示结果、并从下拉菜单中选择选项。
此致、
Bob B
尊敬的 Ravi Kumar:
我很高兴听到您正在使用 EVM 取得进展。 遗憾的是、我们没有适用于 ADS1261的 Linux 驱动程序。 但是 、有一个适用于 ADS124S08的 Linux 驱动 程序、可与 ADS1261示例"C"代码搭配使用以作为额外参考。
此致、
Bob B
尊敬的 Bob:
我对 imx8mm 控制器和 ADS1261 EVM 板有以下观察结果。
案例1:我已将 SPI 时钟配置为5MHZ 和模式1、并使用短 MISO 和 MOSI 主器件线路进行测试、如下图所示。
案例2:我正在将 ADS1261引脚连接到主器件(IMX8mm) SPI 引脚、并尝试从 ADS1261读取命令并从 ADS1261获取预期数据。 请注意、在本例中、我没有将 ADS1261的 MOSI 线路连接到主器件的 MISO 线路。
案例3:我正在将 ADS1261引脚连接到主器件(IMX8mm) SPI 引脚,并尝试从 ADS1261读取命令,并遇到一些干扰,无法读取正确的数据。 请注意、在本例中、我已将 ADS1261的 MOSI 线路连接到主器件的 MISO 线路。
下面是我的示例应用。
静态 const char *设备="/dev/spidev0.0;
静态 uint32_t mode =(SPI_MODE_1);
静态 uint8_t 位= 8;
静态 uint8_t lsb;
静态 uint32_t 速度= 5000000;
静态 uint16_t 延迟;
静态空 pabort (const char * s)
{
如果(errno !=0)
镜;
其他
printf ("%s\n"、s);
abort();
}
静态空 do msg (int fd、int len)
{
struct spi_oco_transfer xfer[2];
unsigned char buf[32]、*bp;
INT 状态;
memset (xfer、0、sizeof xfer);
memset (buf、0、sizeof buf);
如果(len > sizeof buf)
len =尺寸 buf;
buf[0]= 0x06;
buf[1]= 0x00;
Xfer[0].TX_Buf =(无符号长整型) buf;
Xfer[0].len = 2;
Xfer[1].Rx_buf =(无符号长整型) buf;
Xfer[1].len = 2;
status = ioctl (fd、SPI_IOC_message (2)、xfer);
如果(状态< 0){
Perror ("SPI_IOC_MESSAGE");
返回;
}
printf ("响应(%2d、%2d):"、len、status);
for (bp = buf;len;len-)
printf ("%02x"、* bp++);
printf ("\n");
}
静态空 dumpstat (const char *名称、int fd)
{
int ret = 0;
/*
* SPI 模式
*
RET = ioctl (FD、SPI_IOC_WR_MODE、&MODE);
如果(RET =-1)
pabort ("无法设置 SPI 模式");
RET = ioctl (FD、SPI_IOC_RD_MODE、&MODE);
如果(RET =-1)
pabort ("无法获得 SPI 模式");
RET = ioctl (FD、SPI_IOC_WR_MODE32、&MODE);
如果(RET =-1)
pabort ("无法设置 SPI 模式");
RET = ioctl (FD、SPI_IOC_RD_MODE32、&MODE);
如果(RET =-1)
pabort ("无法获得 SPI 模式");
if (ioctl (fd、SPI_IOC_RD_LSB_FIRST、&lsb)< 0){
perror ("SPI rd_lsb_py");
返回;
}
/*
每个字的位数
*
RET = ioctl (fd、SPI_IOC_WR_bits_per_word、&bits);
如果(RET =-1)
pabort ("无法为每个字设置位");
RET = ioctl (fd、SPI_IOC_RD_bits_per_word、&bits);
如果(RET =-1)
pabort ("每个字不能获取位");
/*
*最大速度 Hz
*
RET = ioctl (FD、SPI_IOC_WR_MAX_SPEED_Hz、&SPEED);
如果(RET =-1)
pabort ("无法设置最大速度 Hz");
RET = ioctl (fd、SPI_IOC_RD_MAX_SPEED_Hz、&SPEED);
如果(RET =-1)
pabort ("无法获得最大速度 Hz");
printf ("SPI 模式:0x%x\n"、模式);
printf ("每个字的位数:%u\n"、位);
printf ("最大速度:%u Hz (%u kHz)\n"、速度、速度/1000);
}
int main (int argc、char ** argv)
{
int c;
int msglen = 2;
int fd;
FD =开路(器件、O_RDWR);
如果(FD < 0){
镜("打开");
返回1;
}
dumpstat (device、fd);
Do_msg (fd、msglen);
关闭(FD);
返回0;
}
我不确定在连接主器件的 MISO 线路时出现这种干扰的原因。 但是、每当我尝试读取环回 MISO 和 MOSI 线路时、它都会显示正确的数据。
此致、
Ravi Kumar