zoukankan      html  css  js  c++  java
  • 单片机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    
  • 相关阅读:
    Wannafly挑战赛14 F.细胞
    D 勤奋的杨老师(二)(最小割)
    三分算法求最值
    初识最大流
    初识数据结构
    决策型DP
    哈希表
    【BZOJ】1878: [SDOI2009]HH的项链 (主席树)
    【HDU】1520 Anniversary party(树形dp)
    【UVa】1606 Amphiphilic Carbon Molecules(计算几何)
  • 原文地址:https://www.cnblogs.com/pursuit1996/p/5070393.html
Copyright © 2011-2022 走看看