[原创] [TM4C123实践] 配置SSI并驱动DAC7811显示正弦波

Pom   2015-9-25 14:13 楼主

这几天做学习了TM4C123 单片机, 总得来说, 结合官方例程与参考手册, 加上一个好的示波器, 效率会高很多.

TI的SSI 实际上就是SPI.

我门先熟悉一下SPI

SPI ,就是在主机与从机之间用来传输数据的 通过TX, RX传输数据, 通过CS 片选信号线激活主机与从机的通信, 通过CLK 时钟信号控制频率

  1. #include <stdbool.h>
  2. #include <stdint.h>
  3. #include "inc/hw_memmap.h"
  4. #include "driverlib/gpio.h"
  5. #include "driverlib/pin_map.h"
  6. #include "driverlib/ssi.h"
  7. #include "driverlib/sysctl.h"
  8. //ssi.h 必须要有
  1. extern uint32_t Fre;
  2. void ssi_0(void)
  3. {
  4. SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_10MHZ);
  5. //选择时钟源
  1. SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
  2. nbsp;//使能SSI0
  1. SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
  2. //使能GPIO
  3. GPIOPinConfigure(GPIO_PA2_SSI0CLK); //分别开启GPIO引脚对应的功能
  4. GPIOPinConfigure(GPIO_PA3_SSI0FSS);
  5. GPIOPinConfigure(GPIO_PA5_SSI0TX);
  1. SysCtlGPIOAHBEnable(GPIO_PORTA_BASE);
  2. //挂载高速外设总线
  3. GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_3 |
  4. GPIO_PIN_2); //使能GPIO的SSI功能
  5. SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_TI,
  6. SSI_MODE_MASTER, Fre, 16);
  7. //选择SSI的时钟源,选择工作模式,选择频率,选择发送位数
  1. SSIEnable(SSI0_BASE);//使能
  2. }
  3. void DAC_Write_0(uint16_t ssi0_send)
  4. {
  5. SSIDataPut(SSI0_BASE, 0x3FFF&ssi0_send);/**/ //发送数据
  6. // while(SSIBusy(SSI0_BASE)) ;
  7. }

关于引脚选择:

我们可以参考reference

1.png

关于工作模式选择:

SPI 有4种工作模式:

我们需要根据具体DAC接收方式进行选择:

具体参考reference

2.png

回复评论 (1)

大神!能帮我看三道题吗?都是简单的课后作业。是有偿的。有意的话加我q   2815466569
点赞  2015-11-12 14:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复