[TM4C123單片機實踐] 配置SSI並驅動DAC7811顯示正弦波

這幾天做電賽學習了TM4C123 單片機, 總得來說, 結合官方例程與參考手冊, 加上一個好的示波器, 效率會高很多.

TI的SSI 實際上就是SPI.

我門先熟悉一下SPI

SPI ,就是在主機與從機之間用來傳輸數據的 通過TX, RX傳輸數據, 通過CS 片選信號線激活主機與從機的通信, 通過CLK 時鐘信號控制頻率


#include <stdbool.h>
#include <stdint.h>
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/ssi.h"
#include "driverlib/sysctl.h"
//ssi.h 必須要有

extern uint32_t Fre;
void ssi_0(void)
{
    SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_10MHZ);
    //選擇時鐘源    
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    //使能SSI0
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    //使能GPIO
    GPIOPinConfigure(GPIO_PA2_SSI0CLK); //分別開啓GPIO引腳對應的功能
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA5_SSI0TX);
<p>
</p>	
    SysCtlGPIOAHBEnable(GPIO_PORTA_BASE);
    //掛載高速外設總線		
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_3 |
                   GPIO_PIN_2); //使能GPIO的SSI功能
    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_TI,
                       SSI_MODE_MASTER, Fre, 16);
    //選擇SSI的時鐘源,選擇工作模式,選擇頻率,選擇發送位數
    SSIEnable(SSI0_BASE);//使能
}

void DAC_Write_0(uint16_t ssi0_send)
{
		SSIDataPut(SSI0_BASE, 0x3FFF&ssi0_send);/**/ //發送數據

	//    while(SSIBusy(SSI0_BASE)) ;
}
關於引腳選擇:

我們可以參考reference


關於工作模式選擇:

SPI 有4種工作模式:

我們需要根據具體DAC接收方式進行選擇:

具體參考reference



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章