• 单片机TM4C123学习(八):SPI接口D/A


    1.头文件和变量定义(不是很清楚)

    #include "driverlib/ssi.h"
    #include "driverlib/i2c.h"
    #include "driverlib/udma.h"
    #include "driverlib/fpu.h"
    #include "driverlib/rom.h"
    #include "inc/hw_ssi.h"
    #include "inc/hw_i2c.h"

    2.初始化

    // refer to teacher's demo, SSI module init
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);
        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,1<<1);
        
        SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
        GPIOPinConfigure(GPIO_PD0_SSI1CLK);
        GPIOPinConfigure(GPIO_PD3_SSI1TX);
        GPIOPinTypeSSI(GPIO_PORTD_BASE,GPIO_PIN_3|GPIO_PIN_0);
        SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_1, SSI_MODE_MASTER, 10000000, 16);
        SSIEnable(SSI1_BASE);

    3.波形数据生成(matlab)

    clear all,clc
    i=0:12
    y=4095/12*i;
    y=ceil(y);
    max(y)
    min(y)
    dec2hex(y)

    4.写一个字

    // write data
    void dac_writedata(uint16_t ui32Data)
    {
        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0<<1);
        SSIDataPut(SSI1_BASE, ui32Data);
        while(SSIBusy(SSI1_BASE))
            ;
        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,1<<1);
    }

    5.调用示例

    if (flag_wave==0)
        {
         //dac_writedata(sin_data[i]/voltage_div);
            dac_writedata(sin_data[i]/(3300/voltage));
        }

    6.改变定时器频率

    TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() / (freq*point) - 1);    // Change the timer0 frequency    
  • 相关阅读:
    python实现Linux启动守护进程
    多维监控体系
    python 设计模式
    markdown安装和使用
    cobbler深入学习
    cobbler重装、web、定制化
    cobbler工作流分析
    cobbler安装、部署、测试
    Django中Celery的实现介绍(一)
    centos 搭建git服务器
  • 原文地址:https://www.cnblogs.com/pursuit1996/p/5070393.html
Copyright © 2020-2023  润新知