主题中讨论的其他器件:DAC81416
早上好、
这可能是一个非常通用的问题、但我想知道是否可以使用 Arduino IDE 及其内置 SPI 库从评估模块对 DAC81416进行编程。
谢谢你
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.
早上好、
这可能是一个非常通用的问题、但我想知道是否可以使用 Arduino IDE 及其内置 SPI 库从评估模块对 DAC81416进行编程。
谢谢你
尊敬的 Paul:
感谢您的支持!
我担心与评估模块建立通信时会遇到一些问题。 该器件不响应控制器发送的任何 SPI 命令、似乎保持在断电模式(输出引脚保持一致接地)。 我不确定我的问题是否与硬件或软件有关。
我正在使用 Arduino 对设备进行编程、以下是我尝试使用的代码之一:
#define DATAOUT 11//MOSI
#define datain 12/mISO
#define SPICLOCK 13/SCK
#define SLAVESELECT 10//ss
字节 CLR;
uint8_t 地址;
char SPI_transfer (volatile char data)
{
SPDR = DATA;//开始传输
while (!(SPSR &(1< {
};
返回 SPDR;//返回接收到的字节
}
void setup(){
引脚模式(DATAOUT、输出);
引脚模式(datain、input_pullup);
引脚模式(SPICLOCK、输出);
引脚模式(SLAVESELECT、输出);
digitalWrite (SLAVESELECT、HIGH);
SPCR |=(1 << MSTR);//设置为主器件
SPCR |=(1 << SPE);//启用 SPI
SPCR |=(1 << CPHA);//mode 1
CLR=SPSR;
CLR=SPDR;
延迟(10);
digitalWrite (SLAVESELECT、LOW);
SPI_transfer ((char)(0x03));//加电器件
SPI_TRANSFRATURE ((char)(0x0A));
SPI_TRANSFH ((char)(0x84));
digitalWrite (SLAVESELECT、HIGH);
延迟(10);
digitalWrite (SLAVESELECT、LOW);
SPI_transfer ((char)(0x09));//为每个通道供电
SPI_TRANSFH ((char)(0x00));
SPI_TRANSFH ((char)(0x00));
digitalWrite (SLAVESELECT、HIGH);
延迟(10);
digitalWrite (SLAVESELECT、LOW);
SPI_transfer ((char)(0x05));//启用广播
SPI_transfer ((char)(0xFF));
SPI_transfer ((char)(0xFF));
digitalWrite (SLAVESELECT、HIGH);
延迟(10);
}
void loop(){
//将主代码放在此处,重复运行:
digitalWrite (SLAVESELECT、LOW);
SPI_transfer ((char)(0x0F));//写入半量程 V
SPI_transfer ((char)(0x7F));
SPI_TRANSFH ((char)(0xFF));//写入启用
digitalWrite (SLAVESELECT、HIGH);
延迟(100);
digitalWrite (SLAVESELECT、LOW);
SPI_transfer ((char)(0x0F));//写入全范围 V
SPI_transfer ((char)(0xFF));
SPI_TRANSFH ((char)(0xFF));//写入启用
digitalWrite (SLAVESELECT、HIGH);
延迟(100);
}
我的硬件连接如下:
对于电源接头:
J7.3电源的 GND
J7.4提供5V (来自 Arduino)
从 J7.5处的电源提供5V 电压
J7.6上的 GND
与 J7.7上的电源电压相距为9V
对于 J8处的数字连接:
J8.2上的 Arduino 引脚10 (CS)
J8.3上的 Arduino 引脚12 (MISO)
J8.4上的引脚11 (MOSI)
J8.5 上的 Arduino 提供5V 输出
J8.6处的 GND
J8.7上为5V (LDAC)
J8.8上的引脚13 (CKL)
切换测试点接地
我的跳线配置如下:
J2 J3开路
J9关闭
J10 2-3 (外部 VIO)
J11 1-2 (板载 VREF)
J12 1-2 (GND 作为 VSS)
如果您能就解决我的问题向我提供一些建议、我将不胜感激。
Dave