主题中讨论的其他器件: ADS1148
我想将 ADS1248与外部 Mikrocontroller (Diablo16)器件配合使用、以测量 PT100电阻器的温度。
ADS1248已将电源 AVDD 和 DVDD 设置为3、3V、启动并在硬件侧复位、在启动时保持高电平3、3V。
ADS1248正在连续转换模式下工作、请参阅数据表中的图71第37页。 由于我接收的 ADS1248数据不正确、我在 SPI 总线上的通信出现问题。
当 START 引脚始终保持高电平时、是否有关于连续转换模式(SCLK / DIN / DOUT)的其他信号的其他信息? 是否有必要发送 RDATA 或 RDATAC 命令来访问数据,或者在 DOUT/DRDY 指示新转换准备好访问正确数据后发送24个 SCLK 是否足够?
我在这里附上了 SPI 通信的图片:
我正在使用在 ADS1248的 DRDY 引脚上触发的中断功能。 当 DRDY 发生变化时、我将发送24个 SCKL 来获取数据。
在下面添加了我将用于通过 SPI 与 ADS1248进行通信的 Mikrocontroller 源代码的部分:
//将串行接口配置为 SPI 模式1
PIN_HI (芯片选择);
PIN_SET (PIN_OUT、芯片选择);
如果(! SPI1_SDI_Pin (SDIPin)
打印(“SDI 引脚无效”);
ERR:= 1;
字节序
如果(! SPI1_SCK_Pin (串行时钟)
打印(“SCK 针脚无效”);
ERR:= 1;
字节序
如果(! SPI1_SDO_Pin (SDOPin)
打印(“SDO 针脚无效”);
ERR:= 1;
字节序
如果(! SPI1_Init (SPI_SPEED0、SPI8_MODE_0)//设置 SPI1 mit 4、375Mhz und SPI_mode1
打印(“初始化参数无效”);
ERR:= 1;
字节序
如果(错误)
永远重复
字节序
重复
状态:= Touch_get (Touch_status);//获取触摸屏状态
n:= img_talg(ndl,-1);
//----------------------------------------------
if (state =touch 按压)//如果有按压操作
x:= touch (touch)获取(touch_gRTX);
Y:= touch (touch)获取(触摸);
字节序
//----------------------------------------------
if (state =touch 已释放)//如果有释放
if (n=iDipswitch3) dip3func();
字节序
//----------------------------------------------
if (state =touch 移动)//(如果移动)
x:= touch (touch)获取(touch_gRTX);
Y:= touch (touch)获取(触摸);
if (n =iSlide1) movetrack1 ();// PWM PA4输出引脚的 Channel1跟踪条
if (n =iSlide2) movetrack2 ();// PWM PA9输出引脚的 Channel2跟踪条
if (n =iDipswitch1) dip1func();// Button Channel1 PA5 High (如果 n =iDipswitch1) dip1func();//按钮 Channel1 PA5高电平或低电平
if (n =iDipswitch2) dip2func();// Button Channel1 PA7 High (如果 n =iDipswitch2) dip2func();//按钮 Channel1 PA7高电平或低电平
字节序
BUS_SetChangeInterrupt (SPI_DATaread、DRDY);//通过更改 PA8上的 DRDY 来启动 SPI_DATaread 函数
结束基金
func spi_dataread()
PIN_LO (芯片选择);
//SPI1_Write (RDATA);//读取数据一次
SPI1_ReadBlock (str_ptr (rawdata)、3);//从 SPI 读取3个字节并将其存储在数组 res
//SPI1_Write (NOP);//send NOP 命令
//暂停(1);
PIN_HI (芯片选择);
结束基金
我很高兴能在这个问题上提供任何帮助