AT91SAM7SE应用 -- UART
最近在使用 ATMEL 的AT91SAM7SE256 来处理FPGA 输出的数据,然后再把数据发送到PC机端。
既利用了FPGA 高速数字信号处理的优势,又发挥了ARM处理器对控制类信号的简洁处理。。
在使用的过程中,感觉AT91SAM7SE256的资料比较少,所以在这里我把自己测试过的代码放上来,提供下载。。
开发环境如下所示:
IDE-Version:
μVision V4.23.00.0
Copyright (C) 2011 ARM Ltd and ARM Germany GmbH. All rights reserved.
Tool Version Numbers:
Toolchain: MDK-ARM Standard Version: 4.23
Toolchain Path: D:\Keil\ARM\BIN40
C Compiler: Armcc.Exe V4.1.0.894
Assembler: Armasm.Exe V4.1.0.894
Linker/Locator: ArmLink.Exe V4.1.0.894
Librarian: ArmAr.Exe V4.1.0.894
Hex Converter: FromElf.Exe V4.1.0.894
CPU DLL: SARM.DLL V4.23
Dialog DLL: DARMATS.DLL V1.20
Target DLL: UL2ARM.DLL V1.67
Dialog DLL: TARMATS.DLL V1.20
下面先放上利用UART模块通过RS232接口与 PC机通信的模块。。
默认使用的是UART0 模块。
uart.h
#ifndef UART_H #define UART_H #include "AT91SAM7SE512.h" #include "lib_AT91SAM7SE512.h" #include "Board.h" extern AT91PS_USART COM0; extern void uart_init (void); extern void print_str( char *buffer); extern void send_onebyte(uchar data); #endif
uart.c
#include "uart.h" AT91PS_USART COM0; /****************************************************************************** * \fn AT91F_US_Printk * \brief This function is used to send a string through the US channel ******************************************************************************/ void print_str(char *buffer) // \arg pointer to a string ending by \0 { while (*buffer != '\0') { while (!AT91F_US_TxReady(COM0)) ; AT91F_US_PutChar(COM0, *buffer++); } } void send_onebyte(uchar data) { while (!AT91F_US_TxReady(COM0)) ; AT91F_US_PutChar(COM0, data); } /****************************************************************************** * Function Name : Usart_init * Object : USART initialization * Input Parameters : none * Output Parameters : TRUE ******************************************************************************/ void uart_init(void) //* Begin { COM0 = AT91C_BASE_US0; //* Define RXD and TXD as peripheral AT91F_US0_CfgPIO(); // First, enable the clock of the PIOB AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_US0); // Usart Configure //AT91F_US_Configure(COM0, MCK, AT91C_US_ASYNC_MODE, USART_BAUD_RATE, 0); AT91F_US_Configure(COM0, MCK, AT91C_US_ASYNC_MODE, 19200, 0); // Enable usart COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN; }
头文件AT91SAM7SE512.h为μVision V4.23.00.0自带的
头文件 lib_AT91SAM7SE512.h 为 ATMEL提供的一个库文件,里面有一些使用的函数来实现对AT91SAM7SE256 的配置。文件请到这里下载。