博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dac7562 应用层实现dac
阅读量:5235 次
发布时间:2019-06-14

本文共 1581 字,大约阅读时间需要 5 分钟。

 

 

/*

 * dac7562 (using spidev driver)
 *
  */
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/spi/spidev.h>
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
static const char *device = "/dev/spidev0.0";
static uint8_t mode;
static uint8_t bits = 24;
static uint32_t speed = 500000;
static uint16_t delay;
static void transfer(int fd, int cmd)
{
    int ret;
    uint8_t tx[3] ;

    tx[0] = (uint8_t)(cmd >> 24)    // 24bit 命令格式参见表格 12 13 以及 17

    tx[1] = (uint8_t)(cmd >> 16);  //

    tx[2] = (uint8_t)(cmd >> 0);   //

  
    struct spi_ioc_transfer tr = {
        .tx_buf = (unsigned long)tx,
        .rx_buf = NULL,
        .len = 3,
        .delay_usecs = delay,
        .speed_hz = speed,
        .bits_per_word = bits,
    };
    ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
    if (ret < 1)
        printf("can't send spi message");
    puts("");
}
int main(int argc, char *argv[])
{
    int ret = 0;
    int fd;
  
    fd = open(device, O_RDWR);
    if (fd < 0)
        printf("can't open device");

     mode |= SPI_CPOL;

    /*
     * spi mode
     */
    ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
    if (ret == -1)
        printf("can't set spi mode");
   
    /*
     * bits per word
     */
    ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
    if (ret == -1)
        printf("can't set bits per word");
 
    /*
     * max speed hz
     */
    ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
    if (ret == -1)
        printf("can't set max speed hz");
  
    printf("spi mode: %d\n", mode);
    printf("bits per word: %d\n", bits);
    printf("max speed: %d Hz (%d KHz)\n", speed, speed/1000);
    transfer(fd);
    close(fd);
    return ret;
}

转载于:https://www.cnblogs.com/zym0805/p/5234985.html

你可能感兴趣的文章
Spring @Conditional注解的使用
查看>>
修改mysql max_allowed_packet 配置
查看>>
C#—总结
查看>>
转:C#数据结构和算法学习系列五----基础查找算法
查看>>
制作透明“导航、按钮”
查看>>
Java基础(八)异常处理
查看>>
分布式系统概述
查看>>
函数执行时间查看效率
查看>>
Vue Cli3 TypeScript 搭建工程
查看>>
第四次作业1
查看>>
2.17 数组循环移位
查看>>
day 15
查看>>
java 序列化和反序列化的实现原理
查看>>
Intellij IDEA打开多项目窗口
查看>>
pandas层级索引1
查看>>
iOS archiveRootObject 归档失败问题
查看>>
动态规划:HDU1059-Dividing(多重背包问题的二进制优化)
查看>>
python04
查看>>
框架介绍
查看>>
使用AVCaptureSession捕捉视频
查看>>