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

  • 相关阅读:
    从零开始实现微信机器人
    简单易用的字符串模糊匹配库Fuzzywuzzy
    社会工程学框架
    数据结构【基础知识点总结】
    Go数组
    python generator与coroutine
    Flask开发系列之数据库操作
    【渗透技巧】资产探测与信息收集
    Appium Desktop Inspector 安卓真机配置(Windows)
    JAVA Random 随机类
  • 原文地址:https://www.cnblogs.com/xiangtailiang/p/2663238.html
Copyright © 2020-2023  润新知