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.

[参考译文] DAC81416:Linux 驱动程序源代码

Guru**** 2532360 points
Other Parts Discussed in Thread: DAC81416, ENERGIA

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1038824/dac81416-linux-driver-source-code

器件型号:DAC81416
主题中讨论的其他器件: Energia

尊敬的 TI:

我们在设计中使用 DAC81416 DAC IC。

您能否为此芯片组提供 Linux 驱动程序源代码?

此致、

Shilpa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    HiHarmeet

    您能帮助我们获取 DAC81416的 Linux 驱动程序源代码吗?

    此致、

    Shilpa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Shilpa、您好!

    我们没有适用于 DAC81416的 Linux 驱动程序。 该器件使用相对简单的 SPI 接口、因此创建驱动程序应该是一项相对简单的任务。

    谢谢、

    Paul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请给我们一整天的时间来查看头文件。 另请查找 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Akhilesh 和 Paul。。。

    此致、

    Shilpa