打印

SSI作为SPI使用,AT25F512

[复制链接]
2669|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

1、TIVA的ssi是不是可以配制成SPI使用?
2、文档里说的飞思卡尔SPI是什么意思?是特殊的SPI,不是通用的SPI?
3、AT25F512该怎么通过SSI(或SPI)使用

相关帖子

沙发
dirtwillfly| | 2016-7-8 16:57 | 只看该作者
你看的什么文档?
tiva的文档基本不会出现飞思卡尔的字样的

使用特权

评论回复
板凳
dirtwillfly| | 2016-7-8 17:00 | 只看该作者
Synchronous Serial Interface modules (SSI)

使用特权

评论回复
地板
dirtwillfly| | 2016-7-8 17:05 | 只看该作者
参考这个程序:
硬件SPI通信(速度比GPIO模拟快很多)
/*******************************************
开发坏境:CCSv5.4
开发板:TIVA C Launchpad(TM4C123GH6PM)
程序功能:TLV5618 SPI通信(TI模式)
程序说明:1.DIN——PF1 2.SCLK——PF2 3.CS——PF3
       DAC采样速率:95KHZ
编程者:Linchpin
********************************************/
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "inc/hw_gpio.h"
#include "inc/hw_ssi.h"
#include "grlib/grlib.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/ssi.h"
#include "driverlib/rom.h"
#include "driverlib/pin_map.h"


#define uchar unsigned char
#define uint unsigned int


void DAC_Write_A(float out_volt);


void main(void)
{


        SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_10MHZ);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        //SysCtlGPIOAHBEnable(GPIO_PORTF_BASE);//挂在AHB高性能总线上
    GPIOPinConfigure(GPIO_PF2_SSI1CLK);
        GPIOPinConfigure(GPIO_PF3_SSI1FSS);
        GPIOPinConfigure(GPIO_PF1_SSI1TX);
        GPIOPinTypeSSI(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_2);
        //SSI1_BASE/时钟频率/时钟协议,moto代表SPI协议/工作模式:主机模式/位速率4M/数据帧位数16
        //SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0 , SSI_MODE_MASTER, 25000000, 16);
        SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_TI , SSI_MODE_MASTER, 25000000, 16);
        SSIEnable(SSI1_BASE);


    while(1)
        {
            DAC_Write_A(1);
            //SysCtlDelay(SysCtlClockGet()/3000);
            DAC_Write_A(2);
            //SysCtlDelay(SysCtlClockGet()/3000);
    }
}


void DAC_Write_A(float out_volt)
{
    //(uint)(out_volt*4095)/(2*3.281) 先将电压值转化为0~4095的整数
        //0x0fff&  转化成16位二进制数,后12位为数据位
        //0xc000|  前面加上4位为1100(命令位):快速模式,正常功耗,写数据到A通道
        SSIDataPut(SSI1_BASE, 0xc000|(0x0fff&((uint)((out_volt*4095)/(2*3.281)))));
    while(SSIBusy(SSI1_BASE)) ;//等待发送完毕
}


使用特权

评论回复
5
dirtwillfly| | 2016-7-8 17:07 | 只看该作者
TivaWare里应该也有类似程序

使用特权

评论回复
6
djz1992|  楼主 | 2016-7-11 08:30 | 只看该作者
本帖最后由 djz1992 于 2016-7-11 08:31 编辑
dirtwillfly 发表于 2016-7-8 17:05
参考这个程序:
硬件SPI通信(速度比GPIO模拟快很多)
/*******************************************

感谢老大!!我看得是这个 主要是TM4C带的是SSI,而我用的AT25是SPI通信的,不知道用SSI模式能不能使用?还是要配制成SPI模式

使用特权

评论回复
7
dirtwillfly| | 2016-7-11 08:40 | 只看该作者
djz1992 发表于 2016-7-11 08:30
感谢老大!!我看得是这个主要是TM4C带的是SSI,而我用的AT25是SPI通信的,不知道用SSI模式能不能使用?还 ...

能用的,要配置一下,类似地磅楼层的那个程序

使用特权

评论回复
8
djz1992|  楼主 | 2016-7-11 08:43 | 只看该作者
dirtwillfly 发表于 2016-7-11 08:40
能用的,要配置一下,类似地磅楼层的那个程序

可以理解为SSI的时序可以兼容SPI?

使用特权

评论回复
9
dirtwillfly| | 2016-7-11 10:15 | 只看该作者
djz1992 发表于 2016-7-11 08:43
可以理解为SSI的时序可以兼容SPI?

是的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生苦短,冬日苦长,正是青葱,却无骄阳

115

主题

620

帖子

5

粉丝