LPC1788的spi使用
#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使用的更多相关文章
- SPI基础知识
Serial Peripheral Interface 是摩托罗拉公司提出的一种总线协议,主要应用在EEPROM,FLASH,实时时钟,A/D转换,以及数字信号处理和数字信号解码器中 是一种高速,全双 ...
- spi子系统之驱动SSD1306 OLED
spi子系统之驱动SSD1306 OLED 接触Linux之前,曾以为读源码可以更快的学习软件,于是前几个博客都是一边读源码一边添加注释,甚至精读到每一行代码,实际上效果并不理想,看过之后就忘记了.主 ...
- java中的SPI机制
1 SPI机制简介 SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoader的文档里 ...
- 基于TQ2440的SPI驱动学习(OLED)
平台简介 开发板:TQ2440 (NandFlash:256M 内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdongl ...
- SPI协议及IO模拟
SPI协议 SPI协议网上资料比较多,但是也比较乱,当初在网上搜集的错误资料导致现在比较混乱. SPI协议资料比较正规的是: 1.SPI的规约协议英文文档,例如<摩托罗拉spi协议规范> ...
- STM32F412应用开发笔记之三:SPI总线通讯与AD采集
本次我们在NUCLEO-F412ZG试验模拟量输入采集.我们的模拟量输入采用ADI公司的AD7705,是一片16位两路差分输入的AD采集芯片.具有SPI接口,我们将采用SPI接口与AD7705通讯.两 ...
- spi 10方式编写
//第一个CS变低的时候要sclk为高电平,第一个跳变沿进行赋值 module spi(input clk,input rst_n,output reg sclk,output reg cs,outp ...
- 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆
挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV. PV:计划值,在即定时间点前计划 ...
- SPI总线
一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...
随机推荐
- jsp环境搭建(Windows)
1.软件准备 JDK 最新版jdk-8u45-windows-x64.exe tomcat 最新版32-bit/64-bit Windows Service Installer Eclipse IDE ...
- aX+bY+cZ=n(非负整数解存在性)
题意: a*1234567+b*123456+c*1234=n 非负整数解得存在性. 题解: 看代码. #include<iostream> #include<cstdio> ...
- 基础-Ajax,json
ajax是异步交互,也就是说发送请求,到响应回来,页面只是局部刷新. Ajax 步骤: 获取XMLHttpRequest对象 绑定一个回调函数 open send 在回调函数中完成操作. json是一 ...
- vue数据源转json问题
开发过程中使用到了vue框架进行前端批量数据的处理,将批量数据转换为json格式进行ajax传参时需要注意将vue数据源得到的json结果进行如下处理,webservice接收json数据时无法有效的 ...
- jq之简单的表单验证
<body> <form method="post" action=""> <div class="int"& ...
- emacs command
eval-buffer用来执行.emacs不要再重启了,或cxce执行光标前的一行 eval-region load-file ~/.emacs goto-line global-set-key定义快 ...
- java输出日期时间
Calendar类下方法 c.add(Calendar.YEAR,4);//加4年 c.add(Calendar.MONTH,-1);// 月份减1 c.set(2012,2,23); //把时间设置 ...
- 配置snort
0.如果要输出到mysql,请安装barnyard2 在此之前,请启动并配置mysql git clone https://github.com/firnsy/barnyard2 cd barnyar ...
- HDU 1882 Strange Billboard(状态压缩+转置优化)
状态压缩,我们枚举第一行的所有状态,然后根据第一行去转变下面的行,枚举或者深搜直到最后最后一行,可以判断是不是所有的1都可以全部转换为0,记录所有的解,输出最小的一个就可以. 这里有一个很重要的优化, ...
- PAT1009
多项式乘法 和多项式加法类似,参考之前多项式加法的代码改改就出来了. 主要是注意一下.最大次数应该会有1000000,然后按照乘法规则来,分配率就没有问题 #include<cstdio> ...