OpenCores
URL https://opencores.org/ocsvn/usb_ft232h_avalon-mm_interface/usb_ft232h_avalon-mm_interface/trunk

Subversion Repositories usb_ft232h_avalon-mm_interface

[/] [usb_ft232h_avalon-mm_interface/] [trunk/] [sw/] [usb_ft232h_cpp_style.h] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 melman701
/*
2
 * usb_ft232h.h
3
 *
4
 *  Created on: 06 february 2017.
5
 *      Author: Dmitry Elmanov
6
 */
7
 
8
#ifndef USB_FT232H_H_
9
#define USB_FT232H_H_
10
 
11
#include <io.h>
12
 
13
 
14
const alt_u8  USB_FT232H_WRDATA_ADDR            = 0x0;          //!< Address for write data
15
const alt_u8  USB_FT232H_RDDATA_ADDR            = 0x1;          //!< Address for read data
16
const alt_u8  USB_FT232H_TXSTATUSL_ADDR         = 0x2;          //!< Address for low byte of TX FIFO status register
17
const alt_u8  USB_FT232H_TXSTATUSH_ADDR         = 0x3;          //!< Address for high byte of TX FIFO status register
18
const alt_u8  USB_FT232H_RXSTATUSL_ADDR         = 0x4;          //!< Address for low byte of RX FIFO status register
19
const alt_u8  USB_FT232H_RXSTATUSH_ADDR         = 0x5;          //!< Address for high byte of RX FIFO status register
20
 
21
const alt_u16 USB_FT232H_STATUS_READY_MSK       = 0x8000;       //!< Ready bit mask of RX or TX FIFO status register
22
const alt_u16 USB_FT232H_STATUS_DATA_SIZE_MSK   = 0x7FFF;       //!< Data size mask of RX or TX FIFO status register
23
 
24
 
25
 
26
/*!
27
 * \brief Request data of rx FIFO status register
28
 * \param[in] base Module address
29
 * \return Rx FIFO status register data.
30
 */
31
inline alt_u16 usbFT232HGetRxFifoStatus(alt_u32 base)
32
{
33
    return (IORD_8DIRECT(base, USB_FT232H_RXSTATUSL_ADDR) | (IORD_8DIRECT(base, USB_FT232H_RXSTATUSH_ADDR) << 8));
34
}
35
 
36
/*!
37
 * \brief Request data of tx FIFO status register
38
 * \param[in] base Module address
39
 * \return Tx FIFO status register data.
40
 */
41
inline alt_u16 usbFT232HGetTxFifoStatus(alt_u32 base)
42
{
43
    return (IORD_8DIRECT(base, USB_FT232H_TXSTATUSL_ADDR) | (IORD_8DIRECT(base, USB_FT232H_TXSTATUSH_ADDR) << 8));
44
}
45
 
46
/*!
47
 * \brief Request number of bytes stored in rx FIFO
48
 * \param[in] base Module address
49
 * \return Number of bytes stored in rx FIFO
50
 */
51
inline alt_u16 usbFT232HGetNumberOfDataInRxFifo(alt_u32 base)
52
{
53
    return (usbFT232HGetRxFifoStatus(base) & USB_FT232H_STATUS_DATA_SIZE_MSK);
54
}
55
 
56
/*!
57
 * \brief Request number of bytes stored in tx FIFO
58
 * \param[in] base Module address
59
 * \return Number of bytes stored in tx FIFO
60
 */
61
inline alt_u16 usbFT232HGetNumberOfDataInTxFifo(alt_u32 base)
62
{
63
    return (usbFT232HGetTxFifoStatus(base) & USB_FT232H_STATUS_DATA_SIZE_MSK);
64
}
65
 
66
/*!
67
 * \brief Write byte to module
68
 * \param[in] base Module address
69
 * \param[in] byte Byte for write to the FIFO
70
 */
71
inline void usbFT232HWriteByte(alt_u32 base, alt_u8 byte)
72
{
73
    IOWR_8DIRECT(base, USB_FT232H_WRDATA_ADDR, byte);
74
}
75
 
76
/*!
77
 * \brief Read byte from the FIFO
78
 * \param[in] base Module address
79
 * \return Byte read from the FIFO
80
 */
81
inline alt_u8 usbFT232HReadByte(alt_u32 base)
82
{
83
    return IORD_8DIRECT(base, USB_FT232H_RDDATA_ADDR);
84
}
85
 
86
 
87
#endif /* USB_FT232H_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.