下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验题目: UART0通信、 I2C 主机读写 CAT1025和 SPI 接口一、实验目的1,学习使用UART0通信、 I2C 主机读写CAT1025和 SPI 接口控制。2,熟悉 LPC2138 开发板的使用。3,锻炼学生自己的设计、创造和综合能力。二、实验仪器微型计算机(含软件H-JTAG V0.3.1和 ADSv1_2)、 Easy ARM2131 开发板、USB接口电源线和JTAG接口线以及部分跳线。三、实验原理(1)UART0特性:管脚描述:(2)I2CLPC2138 具有标准的硬件I2C 接口,可配置为主机或从机,总线时钟速率可调整,最高可支持400K总线速率。使用 I2C 总线时
2、,相应引脚设置连接I2C 总线,并且总线上要接两个上拉电阻,阻值1-10K 欧。相关寄存器功能框图如图 4.40所示:(3)SPI 主机实验 7 段数码管显示实验使用 LPC2138的 SPI 接口作为主机向 74HC595发送数据,数据内容由 7 段数码管显示。实验电路图如图 2.四、实验内容实验使用主硬件I2C 软件包,从上位机向UART0发送数据,将接收到的数据通过I2C 往 CAT1025内部写入数据,然后读出校验,如果正确则使用SPI 驱动数码管显示所写数据。实验程序如下:#include config.h#defineCAT10250xA0/* CAT1025器件从地址*/#def
3、ineHC595_CS(1 29)/ P0.29 口为 74HC595 的片#defineUART_BPS115200/ 串口通讯波特率uint8 n,rcv_data;const uint32 LED1 = (1 18); / P1.18控制 LED1 ,低电平点亮const uint32 KEY1 = 1 0; dly-)for (i=0; i50000; i+);/* 函数名称: MSPI_Init()* 函数功能:初始化 SPI 接口,设置为主机。*voidMSPI_Init(void)PINSEL0 = (PINSEL0 & (0xFF 8) | (0x55 8) ;SPCCR =
4、0x52;/ 设置 SPI 时钟分频SPCR= (0 3) |/ CPHA = 0,数据在 SCK 的第一个时钟沿采样(1 4) |/ CPOL = 1, SCK为低有效(1 5) |/ MSTR = 1, SPI处于主模式(0 6) |/ LSBF = 0, SPI数据传输MSB ( 位 7)在先(0 400000)Fi2c = 400000;PINSEL0 = (PINSEL0 & (0xF0) | 0x50;I2SCLH = (Fpclk/Fi2c + 1) / 2;I2SCLL = (Fpclk/Fi2c)/2;I2CONCLR = 0x2C;I2CONSET = 0x40;/*设置
5、I2C 中断允许*/VICIntSelect = 0x00000000;VICVectCntl0 = (0x20 | 0x09);VICVectAddr0 = (int32)IRQ_I2C;VICIntEnable = (1 0; n-)*s+ = UART0_GetByte();* 函数名称 : UART0_SendByte()* 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。* 入口参数 : dat 要发送的数据*void UART0_SendByte (uint8 dat)U0THR = dat;while (U0LSR & 0x40) = 0);/ 等待数据发送完毕* 函数
6、名称 : UART0_SendStr()* 函数功能 :向串口发送一字符串* 入口参数 : str 要发送的字符串的指针* void UART0_SendStr (uint8 const *str)while (1)if (*str = 0)break;/ 遇到结束符,退出UART0_SendByte(*str+);/ 发送数据*函数名称: main()*函数功能:从上位机向UART0 发送数据,将接收到的数据通过I2C往 CAT1025内部写入数据,然后读出校验,如果正正确则使用SPI 驱动数码管显示所写数据。*int main (void)uint8 i,n;uint8 data_buf3
7、2,snd32;PINSEL0 = 0x00005505;/* 设置管脚连接PINSEL2 = PINSEL2 & (0x08);/ P125:16连接 GPIOPCONP |= 110;PINSEL1 = (PINSEL1 & (0xFF 2) | (0xAA 2);MSPI_Init();/ 初始化IODIR = HC595_CS;IO1DIR= LED1;/ 设置 LED1 控制口为输出UART0_Init();/ 串口初始化IRQEnable();/* 打开中断I2cInit(400000);/* I2C 初始化, 100Kwhile (1)UART0_GetStr(snd,10);/
8、 从串口接收字符串for (i=0; i10; i+)GPIOSPI 接口*/*/*/data_bufi = sndi;/*数据09,转换成ASCII码*/data_bufi=data_bufi+0;/*往起始地址0x00 开始写入10 个数据*/I2C_WriteNByte(CAT1025, ONE_BYTE_SUBA, 0x00, data_buf, 10);DelayNS(10);for (i=0; i10; i+)data_bufi = 0;/* 清零数据缓冲区,防止出错I2C_ReadNByte(CAT1025, ONE_BYTE_SUBA, 0x00, data_buf, 10);
9、for (i=0; i10; i+)/*判断读回的数据是否正确*/*/*读回刚才写入的数据*/if (data_bufi != (i + 0)while (1)/* 出错,指示灯闪烁*/IO1SET = LED1;DelayNS(50);IO1CLR = LED1;DelayNS(50);if (IO0PIN & KEY1) = 0) break;/ LED1 熄灭/ LED1 点亮按键 KEY1按下则退出if (data_bufi=data_bufi+0)/ 数据正确则显示n=data_bufi;rcv_data = MSPI_SendData(DISP_TABn);/ 发送显示数据DelayNS(80);/ 延时return 0;五、实验现象本次的实验的结果是: 当运行程序时,用上微机软件 EasyARM 从上位机向 U
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- it维保合同范本
- 产品开发协议合同
- 合伙对接合同范本
- 造价施工合同范本
- 金属行业的合同范本
- 配方加盟合同范本
- 钢材销售易合同范本
- 药品研发合同范本
- 原料售出合同范本
- 讲师电子合同范本
- 呆滞物品收购协议书
- 《浙江省中药饮片炮制规范》 2015年版
- 合同管理办法及流程规定
- 2025北京西城七年级(上)期末生物试卷
- 腹股沟疝手术的手术方式选择
- 2024年移动互联网行业白皮书-七麦数据
- 8 蒲柳人家(节选)(公开课一等奖创新教学设计)- 统编版 语文九年级下册
- 2023年考研199管理类综合能力真题及答案解析
- 肿瘤专科护士进修学习汇报
- 考研学习笔记 《现代心理与教育统计学》(第4版)笔记和课后习题(含考研真题)详解-242-482
- 课件解读利比亚战争
评论
0/150
提交评论