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 总线在物理上是通过接在外围设备微控 ...
随机推荐
- 两个数组各个数相加或相乘变成一个矩阵求第K大
input 1<=T<=20 1<=n<=100000,1<=k<=n*n a1 a2 ... an 0<ai<=10000 b1 b2 ... bn ...
- iOS 2.0 版本切入点
转载自:http://www.infoq.com/cn/articles/Version_2_0 移动互联网如火如荼,iOS 应用+ Android 应用+ 手机站似乎成了所有互联网公司的标配,你的网 ...
- HDU2952:Counting Sheep(DFS)
Counting Sheep Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
- listview设置条目点击的时候不变色(让状态选择器不起作用)
未设置前的效果如下图: 很明显,“酷狗音乐”那个条目被点击的时候,条目背景变为蓝色,怎么去掉这个颜色呢? java代码可以这么写: listView.setSelector(new ColorDraw ...
- css div11
text-indent:30em; 缩进 font-family:"sans serif"文字的字体 border-width:1px; border-style:solid; ...
- 使用VNC远程管理VPS(Centos系统)
首先安装桌面环境,我选择的是xfce,轻量级桌面,小巧实用不占太多内存,(占用内存方面,xfce<kde,kde<gnome). centos默认源里面没有xfce,首先安装epel源,然 ...
- CentOS 在同一窗口打开文件夹
1.打开一个文件夹 2.编辑 - 首选项 - 行为,勾选“总是在浏览器窗口打开”,点击关闭.
- 使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...
- JS动态生成<style>
var nod = document.createElement(“style”), str = “body{background:#000;color:#fff} a{color:#fff;text ...
- opencart添加任意页面到导航栏(修改一级菜单)
pencart默认的黑色导航栏只显示分类目录下的一级分类,这块整个网页中最显眼的“风水宝地”怎么能让他闲置呢,因此我想到了为opencart导航栏添加自定义页面,它可以连接到任意一个网址或者ope ...