LPC1768 SPI 外设控制DA(PCM1796)调试记录

发布者:静默思考最新更新时间:2022-03-03 来源: eefocus关键字:LPC1768  SPI  外设控制  PCM1796 手机看文章 扫描二维码
随时随地手机看文章

/*******************************************************

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=从机  */

[1] [2] [3]
关键字:LPC1768  SPI  外设控制  PCM1796 引用地址:LPC1768 SPI 外设控制DA(PCM1796)调试记录

上一篇:LPC11U35 SSP/SPI学习笔记
下一篇:LPC17XX之SSP0/1接口

推荐阅读最新更新时间:2024-11-08 18:47

STM32F0中外设工作时钟和控制时钟的理解
使用STM32F0芯片的I2C1,根据STM32F0参考手册描述,I2C1的时钟可以自行选择HSI或者SYSCLK。 比如选择HSI作为I2C1的工作时钟时,在用STM32CUBEMX配置生成初始化代码时,还要配置I2C1的APB时钟【如下面截图所示】 这里关于I2C1的工作时钟即source clock,和APB时钟,我们可以把它看成两部分。 一部分是I2C1的工作模块,另外一部分是其控制模块,或者说控制接口模块。 前者的工作时钟可以在HIS和SYSCLK二者间进行选择。 控制模块的时钟仍然由外设时钟PCLK提供,保障外设相关寄存器的正常工作。CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制,包括对I2C1
[单片机]
STM32F0中<font color='red'>外设</font>工作时钟和<font color='red'>控制</font>时钟的理解
STM32G0开发笔记:SPI接口的基本使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SPI接口的基本使用。 1 SPI配置 以下为设置SPI1,引脚映射为PA5\6\7,使用软件控制CS-PA4; 1/* Enable SPI1 Periph and gpio clocks */ 2 rcc_periph_clock_enable(RCC_SPI1); 3 rcc_periph_clock_enable(RCC_GPIOA); 4 5/* Configure GPIOs: 6 * 7 * SCK=PA5 8 * MOSI=PA7 9 * MISO=PA6 10 * 11
[单片机]
STM32G0开发笔记:<font color='red'>SPI</font>接口的基本使用
全球首款2D/3D视频转换实时处理芯片:DA8223
Dialog半导体股份有限公司日前宣布推出全球首款2D/3D影像转换实时处理芯片:DA8223.该芯片为包括智能手机和平板电脑等在内的各种便携式设备提供了2D/3D视频影像实时转换处理的功能。该器件同时也集成了一个视差栅栏(parallax barrier)屏幕驱动器,允许用户在不需要眼镜的情况下观看3D内容。   该芯片对每一帧2D视频图像进行分析,通过分离前景图像和背景图像,创造出一个分层的深度映射图(Z-depth)。从而使每一个原有的图像像素都被映射到左眼和右眼,当通过带有视差栅栏的显示器观看时,就能直接渲染出3D图像效果。DA8223集成了完整的2D/3D图像转换算法,与传统的基于软件的解决方案相比,该芯片在2
[模拟电子]
STC8H开发(十): SPI驱动Nokia5110 LCD(PCD8544)
Nokia5110 LCD 有片很早以前买的Nokia5110 LCD一直在纸箱里吃灰. 可能是买其它配件时送的? 没有合适的用途一直扔在那里, 偶尔见到总会想什么时候有空给它点一下. 外观长这样. 其实市面上这种模块有几个不同的版本, 另一种版本是上下有两排排针, 方便不同的PCB布局, 功能是一样的. 单色LCD, 84x48像素, 带4颗蓝色LED灯珠作为背光. 显示芯片是Philips PCD8544. 因为是Nokia5110手机的显示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手机还没流行的年代, 这是个相当不错的显示输出设备, 相对于1602和2004LCD, 体积小分辨率高, 便宜
[单片机]
STC8H开发(十): <font color='red'>SPI</font>驱动Nokia5110 LCD(PCD8544)
基于SPI总线的LM74型智能温度传感器介绍
LM74是美国国家半导体公司生产的基于SPI总线接口的智能 温度传感器 ,它可构成PC机、打印机的温度检测系统。 1、LM74的性能特点 (1)LM74内含温度传感器和13位∑-△式A/D转换器,测温范围是-55~+125度,
[嵌入式]
PIC16F877A单片机SPI学习
PIR1 Register The PIR1 register contains the individual flag bits for the peripheral interrupts. PIR1 REGISTER PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF SSPIF:Synchronous Serial Port Interrupt Flag bit 1 = The SSP interrupt condition has occurred and must be cleared in software before returning from the int
[单片机]
基于SPI总线的LM74型智能温度传感器
LM74是美国国家半导体公司生产的基于SPI总线接口的智能 温度传感器 ,它可构成PC机、打印机的温度检测系统。 1、LM74的性能特点 (1)LM74内含温度传感器和13位∑-△式A/D转换器,测温范围是-55~+125度,
[工业控制]
基于<font color='red'>SPI</font>总线的LM74型智能温度传感器
串行显示驱动器PS7219及单片机的SPI接口设计
   0 引 言   在单片机的应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示器显示运行的中间结果及状态等等。因此显示器往往是单片机系统必不可少的外部设备之一。常用的显示器有很多种,其中LED(发光二极管显示器)是应用较多的一种,它特别适用于强光和光线极弱的场合。   要使LED显示,必须提供段选码和位选码。传统的硬件译码显示接口广泛采用由中央处理器CPU(如:Intel 8031)扩展I/O口(如:8255),然后再使用逻辑门驱动芯片(如7407等)驱动相应的位码和段码。这种设计,芯片间连线十分复杂,系统工作可靠性不高,已越来越不适应单片机系统集成化、小型化的发展要求。特别是系统并行扩展I/O,其缺点十分明
[单片机]
串行显示驱动器PS7219及单片机的<font color='red'>SPI</font>接口设计

推荐帖子

关于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 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved