以太网 实验报告

更新时间:2024-01-31 21:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

x

电信 学 院

嵌入式系统设计 实验报告

实 验 名 称 USB接口及以太网接口实验 专 业 班 级 电信 102 姓 名 学号 指 导 教 师 x

一、实验任务

1、U盘扇区的读写。2、以太网简易通信。3、TFT彩屏使用与简单GUI。

二、实验原理

CH375芯片的TXD引脚接地, 从而使其工作于并口模式。CH375芯片的8位双向数据总线直接与MCU数据口相连,RD#和WR#分别连接到单片机的读选通输出引脚和写选通输出引脚。片选信号CS#、中断引脚INT#以及地址输入线A0分别与MCU任意分配的引脚相连。当CS#为低电平时,选通CH375芯片;CH375向MCU请求中断时,将INT#引脚电平拉低,这个时候可以读取中断状态,读到的数据可以判断当前芯片或是工作处于什么状态,也可以分析错误原因,在调试的时候使用,可以编写两版程序,一版用于调试,一版用于实际应用;当A0引脚为高电平时,选择CH375的命令端口,可以写入命令,为低电平时选择数据端口, 可以读写数据,具体操作时序详见数据手册。

实验箱上配有一块2.4(240 * 320)寸的TFT触摸彩屏模块,内置TFT专用控制器ILI9325、电阻式触摸屏控制器XPT2046、总线驱动芯片74HC245、电源管理芯片AMS1117-3.3V,还有一个SD卡槽。这个模块实际上就是把一块2.4寸TFT触摸彩屏、控制器、电源管理芯片、电平转化芯片和SD卡槽等器件集成在了一起,并留出了信号和电源的物理接口。

三、实验步骤

1、打开IAR FOR ARM建立新工程,并进行命名、保存。

2、在新工程上右击选择options设置选项,在General Options中的divice项选择NXP公司的LPC2148处理器;在output中的Output Converter项的输出类型选择为Intel型;在Linker中的linker configuration fiel项选择事前复制的*icf文件;在Debugger的Driver中选择J-Link在download选项中将verify download和use flash loader两个选项打勾,点击OK完成设置。

3、新建一个文件,保存文件类型为*.c,在工程上右击选择添加这个c文件,则可以在该C文件中编写程序,实现功能。

4、程序编写好后,点击compile,有错修改,直至无error,有警告可以不理会。然后点击make生成*.hex文件。

5、将J-Link连接至ARM实验箱,在IAR中点击载到ARM芯片中,然后点击

(download and debug)将程序下

全速执行。若有不符合要求的地方,可以修改程序或单步调

试查找错误点,直至符合要求。

四、实验原理图

74HC375模块连接图:

ENC28J60模块连接图

五、实验程序 USB程序

=============================================================================*/ #include ’..’

#include \用串口打印调试信息,需包含

#define TEST_ADDR 123456//测试扇区地址 #define TEST_COUNT 1 //测试扇区数

INT8 DISK_BUFFER[512*32];

void SyS_Init(void) { } //主函数 int main( ) {

printf(\UINT16 i,Count = 0; SyS_Init();

printf( \while (1) {

printf(\

while (WaitUsbInserted()); /* 等待U盘连接 */ Delay_1ms(250); /* 延时等待U盘进入正常工作状态 */

while(mInitDisk()); /* 初始化U盘,实际是识别U盘的类型,必须进行此步骤 */ PLL_Init();

InitUart(1, 60000000, 9600); while(CH375_Init());

for(i=0; i<(512*TEST_COUNT); i++) }

=============================================================================*/ #include “..”

#include \用串口打印调试信息,需包含

/*********************************************************** 函数名称:CH375_Init(void) 函数功能:CH375的初始化 入口参数:NA

出口参数:操作失败则停止运行

0 操作成功

备 注: 外部调用

***********************************************************/ UINT8 CH375_Init(void) {

static UINT8 i, test;

#if UART_DEBUG > 0

}

{ }

mWriteSector(TEST_ADDR,TEST_COUNT,DISK_BUFFER);

for(i=0; i<(512*TEST_COUNT); i++) { }

mReadSector(TEST_ADDR,TEST_COUNT,DISK_BUFFER); //读取扇区到缓冲区,打印缓冲区 for(i=0; i<(512*TEST_COUNT); i++) { }

printf(\printf(\

printf( \

while ( mWaitInterrupt( ) != USB_INT_DISCONNECT ); /* 等待U盘拔出 */ Delay_1ms( 250 );

if((Count)==0) //控制每行打印16个数据 { }

printf(\Count++;

printf(\

DISK_BUFFER[i]=0; //清除缓冲区 DISK_BUFFER[i] = i;

//向数据缓冲区中写入0~255 0~255,共512个字节

printf(\ #endif

Init_CH375_Port();

#if UART_DEBUG > 0

printf(\ #endif

CH375_WR_CMD_PORT(CMD_GET_IC_VER); /* 获取芯片版本号*/ i = CH375_RD_DAT_PORT(); #if UART_DEBUG > 0

printf(\ #endif

#if UART_DEBUG > 0

printf(\ #endif

CH375_WR_CMD_PORT(CMD_CHECK_EXIST); /* 测试CH375是否正常工作 */ CH375_WR_DAT_PORT(0x55); test = ~0x55; {

#if UART_DEBUG > 0

printf(\ #endif

for (i=HARDWARE_RESET; i!=0; i--) {

CH375_WR_CMD_PORT(CMD_RESET_ALL); /* 多次重复发命令,执行硬件复位 */ CH375_RD_DAT_PORT(); }

CH375_WR_CMD_PORT(0);

Delay_1ms(40); /* 延时50ms */ #if UART_DEBUG > 0

printf(\ #endif

CH375_WR_CMD_PORT(CMD_CHECK_EXIST); /* 测试CH375是否正常工作 */ CH375_WR_DAT_PORT(0x55); test = ~0x55; {

#if UART_DEBUG > 0

printf(\ #endif

/* 写入测试数据 */

/* 返回数据应该是测试数据取反 */

/* 写入测试数据 */

/* 返回数据应该是测试数据取反 */

/*CH375端口初始化*/

if (CH375_RD_DAT_PORT() != test) /* CH375不正常 */

if (CH375_RD_DAT_PORT() != test)

while(1); } }

#if UART_DEBUG > 0

printf(\

printf(\设置USB工作模式, 必要操作 */ #endif

CH375_WR_CMD_PORT(CMD_SET_USB_MODE);

CH375_WR_DAT_PORT(USB_MODE); /*USB主机模式,自动产生SOF包*/ #if UART_DEBUG > 0

printf(\/* 设置USB工作模式, 必要操作 */ #endif

for (i=100; i!=0; i--) /* 等待操作成功,通常需要等待10uS-20uS */ {

if (CH375_RD_DAT_PORT() == CMD_RET_SUCCESS) break; }

if (0 == i) /*CH372/CH375存在硬件错误*/ {

#if UART_DEBUG > 0

printf(\ #endif while(1); }

#if UART_DEBUG > 0

printf(\ #endif return 0; }

六、实验总结

while(1); } }

#if UART_DEBUG > 0

printf(\

printf(\设置USB工作模式, 必要操作 */ #endif

CH375_WR_CMD_PORT(CMD_SET_USB_MODE);

CH375_WR_DAT_PORT(USB_MODE); /*USB主机模式,自动产生SOF包*/ #if UART_DEBUG > 0

printf(\/* 设置USB工作模式, 必要操作 */ #endif

for (i=100; i!=0; i--) /* 等待操作成功,通常需要等待10uS-20uS */ {

if (CH375_RD_DAT_PORT() == CMD_RET_SUCCESS) break; }

if (0 == i) /*CH372/CH375存在硬件错误*/ {

#if UART_DEBUG > 0

printf(\ #endif while(1); }

#if UART_DEBUG > 0

printf(\ #endif return 0; }

六、实验总结

本文来源:https://www.bwwdw.com/article/tkhw.html

Top