请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TDC1000 主题中讨论的其他器件:TDC7200
您好!
我正在使用 TDC1000、TDC7200和 Arduino MKR1000创建超声波流量计。
由于这是我第一次使用 SPI、我认为我应该从读取 TDC1000上的 CONFIG_0和从中写入开始。
Arduino 仅读取零、如下图所示。
我已经尝试过 Arduino 的所有不同 SPI 模式(0-3)。
几周后、我不能弄清楚我的错误。
非常感谢您在以下代码故障排除方面提供帮助。
谢谢。
#include
int selectTDC1000 = 5;
int selectTDC7200 = 0;
int enableTDC1000 = 7;
int enableTDC7200 = 1;
int dataReadyPin = 4;
int channelSelect = 3;
byte config1_address = 0x00;
byte config1_instruction = 0x00;
unsigned int writeRead = 0x00;int
readytoRead 寄存器(
int device、unsigned byte) 字节数据);
void setup()
{
Serial.begin(9600);
SPI.beginTransaction(SPISettings(16000000、MSBFIRST、SPI_MODE0);
pinMode (selectTDC1000、 输出);
pinMode (selectTDC7200、输出);
pinMode (enableTDC1000、输出);
PinMode (enableTDC7200、输出);
pinMode (dataReadyPin、输入);
pinMode (通道选择、 输出);
digitalWrite (selectTDC1000、HIGH);//低电平有效
digitalWrite (selectTDC7200、HIGH);//低电平有效
digitalWrite (enableTDC1000、LOW);
digitalWrite (enableTDC7200、low);
}
void loop()
{
digitalWrite (enableTDC1000、high);
delayMicroseconds (350);
//***阅读和印刷寄存器*********
whatWasRead = readRegister (1000、config1_address、1);
Serial.print ("写入前:");
Serial.println (whatWasRead、 二);
//*********
//***向寄存器写入新字节,从寄存器*****读取字节
writeRegister (1000、config1_address、0x02);
whatWasRead = readRegister (1000、config1_address、1);
serial.print ("写后:");
serial.****println (whatWasRead、bin);
serial.print ("\n");
//*********
digitalWrite (enableTDC1000、low);
}
void writeRegister (int device、byte address、byte data)
{
if (device = 1000)
{
digitalWrite (selectTDC1000、low);//low active
}
否则(device == 7200)
{
digitalWrite (selectTDC7200、low);//low active
}
地址|= 1000000;
spi.transfer (address);
spi.transfer (data);
if (device = 1000)
{
digitalWrite (selectTDC1000、HIGH);//low active
}
否则(device == 7200)
{
digitalWrite (selectTDC7200、HIGH);//low active
}
}
unsigned int readRegister (int device、byte address、int bytesToRead)
//设备:1000或7200。
* address:指定器件上的寄存器地址。
*我们正在读取的数据有多少个字节?
*/
{
字节 inByte = 0; //从 SPI
unsigned int 结果中传入的字节= 0;//返回
Serial.print ("我们从以下地址读取的地址:");
Serial.print (地址、二进制);
Serial.print ("\n");
if (device = 1000)
{
digitalWrite (selectTDC1000、low);//low active
}
否则(device == 7200)
{
digitalWrite (selectTDC7200、low);//low active
}
字节 readFromThisRegister =地址;//读取位位于地址(MSBF)之前、因此0b000000 = 0b0000000
SPI.transfer (readFromThisRegister);
结果= SPI.transfer (0x00);
bytesToRead -;
while (bytesToRead > 0)
{
结果=结果<< 8;
InByte = SPI.transfer (0x00);
结果=结果| inByte;
字节 ToRead -;
}
if (device == 1000)
{
digitalWrite (selectTDC1000、HIGH);//low active
}
否则(device == 7200)
{
digitalWrite (selectTDC7200、HIGH);//low active
}
返回结果;
}
