最近在使用 ATMEL 的AT91SAM7SE256 来处理FPGA 输出的数据,然后再把数据发送到PC机端。
既利用了FPGA 高速数字信号处理的优势,又发挥了ARM处理器对控制类信号的简洁处理。。
在使用的过程中,感觉AT91SAM7SE256的资料比较少,所以在这里我把自己测试过的代码放上来,提供下载。。
开发环境如下所示:
IDE-Version:
μVision V4.23.00.0Copyright (C) 2011 ARM Ltd and ARM Germany GmbH. All rights reserved.Tool Version Numbers:
Toolchain: MDK-ARM Standard Version: 4.23Toolchain Path: D:\Keil\ARM\BIN40C Compiler: Armcc.Exe V4.1.0.894Assembler: Armasm.Exe V4.1.0.894Linker/Locator: ArmLink.Exe V4.1.0.894Librarian: ArmAr.Exe V4.1.0.894Hex Converter: FromElf.Exe V4.1.0.894CPU DLL: SARM.DLL V4.23Dialog DLL: DARMATS.DLL V1.20Target DLL: UL2ARM.DLL V1.67Dialog DLL: TARMATS.DLL V1.20
下面先放上利用UART模块通过RS232接口与 PC机通信的模块。。
默认使用的是UART0 模块。
uart.h
View Code
#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
View Code
#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 的配置。文件请到这里下载。