/*******************************************************
DA:PCM1796初始化
2015年1月29日 11:43:18
CopyRight @ ZengZhi
**********************************************************/
#include "DA1796.h"
#define SPI_ID (2)
#define SPI2_CS (1 << 16) /* P0.16口为片选脚 */
#define CE2_Low() (LPC_GPIO0->FIOCLR |= SPI2_CS) /* 选中从器件 */
#define CE2_High() (LPC_GPIO0->FIOSET |= SPI2_CS)
#define SPI3_CS (1 << 21) /* P1.21口为片选脚 */
#define CE3_Low() (LPC_GPIO1->FIOCLR |= SPI3_CS) /* 选中从器件 */
#define CE3_High() (LPC_GPIO1->FIOSET |= SPI3_CS)
#define RESET_1796() (LPC_GPIO4->FIOCLR |= (1<<28))
#define WORK_1796() (LPC_GPIO4->FIOSET |= (1<<28))
volatile uint8_t RcvFlag = 0; /* 接收到新数据标志 */
volatile uint8_t RcvData = 0; /* 接收到的数据 */
//U47
void SSP1_Init_SPI1(void)
{
LPC_SC->PCONP |= (1 << 21); /* 打开SSP0电源 */
/**
P0.6:SPI1_SEL
P0.7:SPI1_CLK
P0.8:SPI1_MISO
P0.9:SPI1_MOSI
**/
/* SSEL1 | SCK1 |MISO1 | MOSI1 设置管脚功能 */
LPC_PINCON->PINSEL0 |= (0x02ul << 12) | (0x02ul << 14) | (0x02ul << 16) |(0x02ul << 18);
/*
* 设置数据长度为8位,帧格式SPI,SCK高有效,第一个时钟沿采样,位速率为默认值
*/
LPC_SSP1 ->CR0 = (0x01 << 8) /* SCR 设置SPI时钟分频 25M/(0x24 * (0x01+1)) */
| (0x00 << 7) /* CPHA 时钟输出相位 */
| (0x00 << 6) /* CPOL 时钟输出极性 */
| (0x00 << 4) /* FRF 帧格式 00=SPI */
| (0x0F << 0); /* DSS 数据长度,16bit */
LPC_SSP1->CR1 = (0x00 << 3) /* SOD 从机输出禁能,0=允许 */
| (0x00 << 2) /* MS 主从选择,0=主机,1=从机 */
| (0x01 << 1) /* SSE SSP使能 */
| (0x00 << 0); /* LBM 回写模式 */
LPC_SSP1->CPSR = 0x24; //0x52; /* 设置SSP从PCLK获得的分频值, */
/* 主模式下有效, 最小值为0x02 */
}
/*********************************************************************************************************
** Function name: SSP_SendData
** Descriptions: SSP接口向SSP总线发送数据
** input parameters: data 待发送的数据
** output parameters: 返回值为读取的数据
*********************************************************************************************************/
uint16_t SSP1_SendData(uint16_t data)
{
while ((LPC_SSP1->SR & 0x02) == 0); /* 等待发送FIFO留出空间 */
LPC_SSP0->DR = data;
while ((LPC_SSP1->SR & 0x10) == 0x10); /* 等待数据帧发送完毕 */
return ((uint16_t)LPC_SSP1->DR);
}
void SSPSendCmd_SPI1(uint8_t addr,uint8_t ndata)
{
uint16_t data = (0<<15) | (addr<<8) | (ndata);
SSP1_SendData(data);
}
/*********************************************************************************************************
** Function name: SSP0_Init
** Descriptions: 将SSP控制器设置为主机
** input parameters: 无
** output parameters: 无
**********************************************************************************************************/
void SSP0_Init_SPI3(void)
{
LPC_SC->PCONP |= (1 << 21); /* 打开SSP0电源 */
/**
P1.21:SPI3_SEL
P1.20:SPI3_CLK
P1.23:SPI3_MISO
P1.24:SPI3_MOSI
**/
/* SSEL0 | SCK0 |MISO0 | MOSI0 设置管脚功能 U2 */
LPC_PINCON->PINSEL3 |= (0x03ul << 8) | (0x03ul << 10) | (0x03ul << 14) |(0x03ul << 16);
/*
* 设置数据长度为8位,帧格式SPI,SCK高有效,第一个时钟沿采样,位速率为默认值
*/
LPC_SSP0->CR0 = (0x01 << 8) /* SCR 设置SPI时钟分频 25M/(0x24 * (0x01+1)) */
| (0x00 << 7) /* CPHA 时钟输出相位 */
| (0x00 << 6) /* CPOL 时钟输出极性 */
| (0x00 << 4) /* FRF 帧格式 00=SPI */
| (0x0F << 0); /* DSS 数据长度,16bit */
LPC_SSP0->CR1 = (0x00 << 3) /* SOD 从机输出禁能,0=允许 */
| (0x00 << 2) /* MS 主从选择,0=主机,1=从机 */
上一篇:LPC11U35 SSP/SPI学习笔记
下一篇:LPC17XX之SSP0/1接口
推荐阅读最新更新时间:2024-11-08 18:47
推荐帖子
- 关于MAX232问题,请求!!
- 我用开关电源,MAX232老烧串口,有的时候把计算机都烧了,但是用模拟电源就没有这样的情况,为什么会这样,接法肯定没有问题的关于MAX232问题,请求!!开关电源干扰较大,做好良好接地,滤波电路加上如果开关电源是市电AC输入的话,莫非是绝缘不好,有漏电?查一下输入电路是咋样的,是不是阻容降压的那种。如果电源隔离很好的情况下,就要考虑纹波系数的问题了.加大滤波电容,串联电感...相信是可以解决的.老烧.....肯定哪里有问题。。相当危险不知道楼主的开关电源是什么样参数的呢?赞同
- zjjone1023 单片机
- 基于WiFi的环境信息物联网云平台监测系统设计
- 摘要:针对智能家居、智能建筑、森林防火监测、生态环境监测等领域的环境信息监测问题,设计了一款基于esp8266WiFi模块的环境信息监测系统。利用DHT11温湿度传感器监测周围环境的温湿度信息,利用MQ-2传感器监测烟雾浓度,利用光敏电阻的光电导效应监测环境的光照强度。同时,设计了云端监测应用和手机APP软件,可将监测的环境信息通过WiFi上传到云端,之后传输至手机APP,便于用户远程监测。经过电路设计与制作、编程开发、软硬件调
- 毛球大大 RF/无线
- 基于传感器与mcu的智能LED照明解决方案
- 发光二极管(LED)已经从电子设备指标的优势选择转变为使照明更节能的主要焦点。有效产生强光照度的能力使LED成为大多数应用越来越受欢迎的选择,超越了荧光和其他技术的能力。LED相对于其他选项的另一个重要优势是其可控性。 虽然LED调光涉及比传统白炽灯照明所用的简单控制器更复杂的电路设计,但LED支持不仅可以调节照明水平,但发出的颜色要精细调整。这种可控性可用于各种应用,从仓库和工厂的高棚照明到智能温室。 LED照明已经通过延长可能的生长季节来提高农业产量温带气候下几个月的作物范围
- fish001 无线连接
- VHDL中arith程序包和除法问题
- 问各位两点问题:1.下面vhdl代码中为什么要使用arith程序包呢?2.msb_sum:INTEGER:=15;那么msb_sum/2应该等于7还是等于8呢?为什么?LIBRARYIEEE;--待例化元件USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_arith.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYaddernISPORT(a,
- cclccl985 嵌入式系统
- 【米尔MYS-8MMX】- 4:试用 Application Finder 和 Terminal Emulator
- 总体印象:对于这两处任何功能的使用体验预期,都必须建立在对这一自身定位的准确理解上:首先,换了一台显示器,从一个液晶电视到一个液晶屏,不能自动识别分辨率:鼠标点击一下,出现桌面:显示不完整:功能按钮也不能用:【米尔MYS-8MMX】-4:试用ApplicationFinder和TerminalEmulator 换回起先的创维电视。从移动电话向米尔传文件可以:从米尔向移动电话传文件不行:Term
- MianQi Linux与安卓
- 电源输入限制浪涌电流模块
- 一、A3系列电源输入限制浪涌电流模块简介1、电源简介开关电源由于在体积、重量和效率等多方面的优势,已经越来越广泛地应用在通信、航天航空、军工兵器、发电变电等领域。从1955年美国科学家罗耶(G.H.ROYER)首先研制成功了利用磁饱和进行自激振荡的开关电源到今天的零电压ZVS、零电流ZCS技术,开关电源得到了飞速发展。开关电源电路的一般电路结构由AC220V交流电经全桥整流、限制浪涌电流电路、滤波电路、DC/DC变换器几部分组成。其中限制浪涌电流电路在开关电源的国标测试规范中有明确的限制,并
- simamy 电源技术
设计资源 培训 开发板 精华推荐
- SI5338-EVB,使用 Si5338 系列任意频率、任意输出时钟发生器和时钟合成器的评估板
- AM1/4S-1215SZ 15V 0.25 瓦 DC/DC 转换器的典型应用
- BGA162-TF
- #第五届立创电子设计大赛#电阻电容检测器主板
- Si5328-EVB,基于 Si5328 任意频率精密时钟定时 IC 的评估套件
- SPC560PADPT100S,用于 SPC560P44L3 和 SPC560P50L3 SPC560 系列 512KB/1MB MCU 器件的子板/适配器板,采用 QFP100 封装
- LT8714EFE 350kHz、四象限转换器的典型应用电路从 10V 至 14V 输入驱动一个 3A TEC
- #第八届立创电赛#电子时钟
- OP113ESZ-REEL7 多媒体声音编解码器耳机放大器典型应用
- DC2123B,基于 LT3790 的演示板,8V = VIN = 56V,VOUT = 24V,电流高达 5A 同步降压-升压转换器