您好!
我将 LM6517放在自己设计的电路板上,SPI 读写不起作用。 我在 SPI 中配置了芯片、MOD0接地、MOD1悬空。 我将原理图放在下面。 我最初在一些数字输入上有5V 电压、因此我使用了一个全新的电路板并用手切断了布线。
对于引脚1、我考虑了标记下方的大点。 这是引脚1的正确方向吗??? 是否有人可以发布芯片上放大的评估板的清晰图片??? 我放置了 PCB 的图片。 我用红色标记了 SPI 信号名称。
数据表第22页上显示了将300 Ω 至2k Ω 电阻器上拉至3.3V。 我在 SDO 上放置一个1.8k 电阻器一次、作为下拉至接地、一次作为上拉至3.3V。 SDO 绝不会以任何方式驱动电阻器。
我临时将电路板插入具有完全 ARM 调试功能的 Cortex M0处理器的 Arduino M0 Pro。 我使用硬件 SPI。
我尝试发送几个不同的增益值。 我对变压器电路似乎短路了函数发生器不太有信心。 这将进入另一个帖子。
我尝试在模式0下使用1MHz 时钟发出读取命令。 我在读取时降低 CS、发送0x80并再发送一次 x80作为虚拟字节。 接下来、我提出 CS。 LMH6517未驱动 SDO。 它保持高电平。 我附加了我的逻辑分析仪捕获和 Arduino 代码。 为了便于参考、我放置了 LMH617时序相关数据表的截图。
是否有人发现了问题?
#include #include #include const int slaveSelectPinLmh6517 = 8; const int slaveSelectPinAD9958 = 5; void lmh6517RegularRead (){ volatile uint8_t instruction = B10000000;/*读取通道0*/ volatile uint8_t value1;void Write (slaveSelect1 )、L165*指令;mdelt1 (slumtSPI);low transfer Value1 = spi.transfer (instruction); delayMicroseconds (5); digitalWrite (slaveSelectPinLmh6517、HIGH); delayMicroseconds (10); serial.print (instruction); serial.print ('、'); serial.println (value1); } void lmh6517RegularWrite (uint8_t gainCode){ volatile uint8_t instruction = B00000000;//写入通道0*/ digitalWrite (slaveSelectPinlm6517、low );delayCode ( SPI);deltransfer (rand.seconds);(SPI) delayMicroseconds (5); digitalWrite (slaveSelectPinLmh6517、HIGH); delayMicroseconds (10); } void setup (){ Serial.begin(9600); Serial.println ("start"); pinMode (slaveSelectPinAd9958、OUTPUT); pinMode (slaveSelectPinLmh6517、 输出); digitalWrite (slaveSelectPinAD9958、HIGH); digitalWrite (slaveSelectPinLmh6517、HIGH); SPI.begin(); SPI.setDataMode(SPI_MODE0; SPI.setBitOrder (MSBFIRST); SPI.setClockDivider(48); } void loop(){ lmh6517RegularWrite (0xF0); lmh6517RegularRead (); delayMicroseconds (200); }
谢谢、
弗兰克