主题中讨论的其他器件: Energia
尊敬的 TI:
我们在设计中使用 DAC81416 DAC IC。
您能否为此芯片组提供 Linux 驱动程序源代码?
此致、
Shilpa
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.
您好!
请给我们一整天的时间来查看头文件。 另请查找 Energia sketch 的 SPI 代码示例。
#include
#define NUM_Bytes 3 // SPI 帧中的字节数
//SPIClass tivacSPI0 (0);// SSI0
//SPIClass tivacSPI1 (1);// SSI1
//SPIClass tivacSPI2 (2);// SSI2
//SPIClass tivacSPI3 (3);//端口 F 上的 SSI3
SPIClass tivacSPI3_Q (4);//端口 Q 上的 SSI3
void setup(){
uint8_t initTx0[NUM_bytes]、initTX1[NUM_bytes]、initTX2[NUM_bytes]、i;
int8_t ret;
uint8_t * initPtr;
Serial.begin(9600);
serial.print ("启动 DAC81416示例");
tivacSPI0.begin();
tivacSPI1.begin();
tivacSPI2.begin();
tivacSPI3.begin();
tivacSPI3_Q.begin();
PinMode (PD_2、输出);//将 PD2配置为 CLR
digitalWrite (PD_2、HIGH);//默认将 CLR 设置为 HIGH
//范围:+/- 20V
initTx0[0]= 0x0A;
initTx0[1]= 0xCC;
initTx0[2]= 0xCC;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//范围:+/- 20V
initTx0[0]= 0x0B;
initTx0[1]= 0xCC;
initTx0[2]= 0xCC;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//范围:+/- 20V
initTx0[0]= 0x0C;
initTx0[1]= 0xCC;
initTx0[2]= 0xCC;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//范围:+/- 20V
initTx0[0]= 0x0D;
initTx0[1]= 0xCC;
initTx0[2]= 0xCC;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//加电设备
initTx0[0]= 0x03;
initTx0[1]= 0x0A;
initTx0[2]= 0x84;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//为所有通道加电
initTx0[0]= 0x09;
initTx0[1]= 0x00;
initTx0[2]= 0x00;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//为所有通道启用广播
initTx0[0]= 0x05;
initTx0[1]= 0xFF;
initTx0[2]= 0xFF;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
//将代码写入所有通道
initTx0[0]= 0x0F;
initTx0[1]= 0xFF;
initTx0[2]= 0xFF;
initPtr =&initTx0[0];
RET = tvacSPI3_Q.DACtransfer ((uint8_t*) initPtr、(uint8_t) NUM_bytes);
}
void loop(){
INT8_t RV、ldacFlag = 0;
int32_t samplpleCount;
uint8_t *txPtr;
uint8_t spiTx0[NUM_bytes];
//编写中间代码
spiTx0[0]= 0x10;
spiTx0[1]= 0x7F;
spiTx0[2]= 0xFF;
txPtr =&spiTx0[0];
rv = tvacSPI3_Q.DACtransfer ((uint8_t*) txPtr、(uint8_t)(NUM_bytes));
延迟(100);
//编写完整代码
spiTx0[0]= 0x10;
spiTx0[1]= 0xFF;
spiTx0[2]= 0xFF;
txPtr =&spiTx0[0];
rv = tvacSPI3_Q.DACtransfer ((uint8_t*) txPtr、(uint8_t)(NUM_bytes));
延迟(100);
}
//添加到 SPI.cpp
int8_t SPIClass::dac transfer (uint8_t* datapeinter、uint8_t numBytes){
unsigned long rxtxData[MAX_Bytes];
if (numBytes > MAX_Bytes){
返回-1;
}
if (datapeinter =NULL){
返回-1;
}
for (int byteCount=0;byteCount < numBytes;byteCount++){
rxtxData[byteCount]=数据使码[byteCount];
}
if (SSIBitOrder = LSBFIRST){
返回-1;
}
for (int byteCount=0;byteCount < numBytes;byteCount++){
ROM_SSIDataPut (SSIBASE、(uint8_t) rxtxData[byteCount]);
}
while (ROM_SSIBusy (SSIBASE));
返回(INT8_t) 0;
}
在这种情况下、您需要对任何处理器上的 SPI 进行通用设置。 它如下所示:
模式:模式1 (CPOL=0、CPHA=1)
顺序:MSB 优先
CS 极性:低电平有效
字节数:3.
如果需要、您可以将 GPIO 用于 LDAC 和 CLR。
此致、
AK