主题中讨论的其他器件: TDC1000、
您好!
我目前在使用 Arduino Uno 读取/写入 TDC7200时遇到一些问题。 我已经在下面尝试过使用和不使用上拉电阻器的电路、并包含了我在下面使用的代码。 对于这两个电路、我可以读取/写入 TDC1000、但由于某种原因、我无法对 TDC7200执行相同的操作。 这两个 IC 之间的 SPI 约定是否不同?
请告诉我、我是否可以提供可提供更多见解的信息。 感谢您的观看和关注。
此致、
插孔
连接:
#include
#include
int dt = 200;
float CLK_FREQ = 8*pow (10、6);//时钟频率(缺省值8MHz)
浮点 CLK_PERIOD = 1/CLK_FREQ;
uint32_t SPIfrequency = 20000000;
//********* TDC7200寄存器地址列表*********
字节 CONFIG1 = 0x00;
字节 CONFIG2 = 0x01;
字节 INT_STATUS = 0x02;
字节 INT_MASK = 0x03;
字节粗糙_CNTR_OVF = 0x04;
字节粗糙_CNTR_OVF = 0x05;
字节 CLOCK _CNTR_OVF = 0x06;
字节 CLOCK _CNTR_OVF = 0x07;
字节 CLOCK _CNTR_STOP_MASK_H = 0x08;
字节 CLOCK _CNTR_STOP_MASK_L = 0x09;
字节时间1 = 0x10;
字节 CLOCK _COUNT1 = 0x11;
字节时间2 = 0x12;
字节 CALIBRATION1 = 0x1B;
字节 CALIBRATION2 = 0x1C;
//********* TDC7200寄存器地址列表结束*********
int selectTDC1000 = 5;
int selectTDC7200 = 6;
int enableTDC1000 = 7;
int enableTDC7200 = 8;
int dataReadyPin = 4;
内部通道选择= 3;
INT INTBTDC7200 = 2;
INT TDC7200clock = 9;
void setup(){
Serial.begin(9600);
serial.println ("---------------------- 程序启动-------------------------------------------------------- ");
SPI.begin();
引脚模式(TDC7200clock、输出);
PinMode (selectTDC1000、输出);
PinMode (selectTDC7200、输出);
PinMode (enableTDC1000、输出);
PinMode (enableTDC7200、输出);
PinMode (dataReadyPin、输入);//循环中未使用
引脚模式(通道选择、输出);//在环路中未使用
analogWrite (TDC7200clock、128);
digitalWrite (selectTDC1000、HIGH);
digitalWrite (selectTDC7200、HIGH);//Select 为低电平有效、设置为高电平@初始化
digitalWrite (enableTDC1000、low);
digitalWrite (enableTDC7200、low);//使能为高电平有效,设置为低电平@初始化
digitalWrite (enableTDC1000、高电平);
digitalWrite (enableTDC7200、高电平);
延迟(dt);
TDC7200Write (CONFIG1、0x02);
TDC7200Write (CONFIG2、0x80);
TDC7200Write (INT_STATUS、0x06);
TDC7200Write (INT_MASK、0x89);
uint16_t readCONFIG1 = TDC7200Read (config1);
uint16_t readCONFIG2 = TDC7200Read (CONFIG2);
uint16_t readint_status = TDC7200Read (INT_STATUS);
uint16_t readint_mask = TDC7200Read (INT_mask);
serial.print ("config1=");
serial.println (readCONFIG1、bin);
serial.print ("\n");
serial.print ("CONFIG2=");
serial.println (readCONFIG2、bin);
serial.print ("\n");
serial.print ("INT_STATUS=");
serial.println (readint_status、bin);
serial.print ("\n");
serial.print ("INT_MASK=");
serial.println (readint_mask、bin);
serial.print ("\n");
}
void loop(){
//将主代码放在此处,重复运行:
SPI.beginTransaction(SPISettings(SPIfrequency,MSBFIRST,SPI_MODE3));
延迟(1000);
}
空 TDC7200Write (字节地址、字节数据){
SPI.beginTransaction(SPISettings(SPIfrequency,MSBFIRST,SPI_MODE3));
digitalWrite (selectTDC7200、low);//在 selectTDC1000或 selectTDC7200之间
delayMicroseconds (100);
地址|= 0x40;
spi.transfer (address);
spi.transfer (data);
digitalWrite (selectTDC7200、HIGH);
spi.endTransaction();
};
字节 TDC7200Read (字节地址){
SPI.beginTransaction(SPISettings(SPIfrequency,MSBFIRST,SPI_MODE3));
digitalWrite (selectTDC7200、low);
delayMicroseconds (100);
//spi.transfer (address);
spi.transfer (address);
字节 inByte = SPI.transfer (0x00);
digitalWrite (selectTDC7200、HIGH);
spi.endTransaction();
返回 inByte;
};
示例输出:
当 R/W 连接到 TDC7200时:
------------ 程序启动--------------------------------------------------------
CONFIG1= 11111111
CONFIG2= 11111111
INT_STATUS= 11111111
INT_MASK= 11111111
当 R/W 连接到 TDC1000时:
------------ 程序启动--------------------------------------------------------
CONFIG_0= 10
CONFIG_1= 10000000
CONFIG_2= 110
CONFIG_3= 1001










