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

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 的配置。文件请到这里下载。

 

posted @ 2012-08-30 10:41  xiangtailiang  阅读(349)  评论(0编辑  收藏  举报