/**
|
******************************************************************************
|
* @file fm33a0xxev_u7816.h
|
* @author FM33A0XXEV Application Team
|
* @version V1.0.0
|
* @date 16-April-2020
|
* @brief This file contains all the functions prototypes for the U7816 firmware library.
|
******************************************************************************
|
*/
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef __FM33A0XXEV_U7816_H
|
#define __FM33A0XXEV_U7816_H
|
|
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "FM33A0XXEV.h"
|
|
typedef struct
|
{
|
FunState TXEN; //·¢ËÍʹÄÜ
|
FunState RXEN; //½ÓÊÜʹÄÜ
|
FunState CKOEN; //U7816ʱÖÓCLKÊä³öʹÄÜ¿ØÖÆ
|
FunState HPUAT; //U7816ͨµÀÊý¾Ý·¢ËÍÇ¿ÉÏÀµç×è×Ô¶¯ÓÐЧ¿ØÖÆ
|
FunState HPUEN; //U7816ͨµÀÇ¿ÉÏÀʹÄÜ¿ØÖÆ
|
|
uint32_t ERSW; //ERROR SIGNAL¿í¶ÈÑ¡Ôñ
|
uint32_t ERSGD; //ERROR SIGNALºóGUARDTIME¿í¶ÈÑ¡Ôñ£¨½öÔÚ·¢ËÍʱÓÐЧ£©
|
FunState BGTEN; //BGT£¨block guard time£©¿ØÖÆ
|
uint32_t REP_T; //¿ØÖƽÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé³ö´íʱ×Ô¶¯ÖØ·¢´ÎÊý
|
uint32_t PAR; //ÆæÅ¼Ð£ÑéÀàÐÍÑ¡Ôñ
|
uint32_t SFREN; //Guard Time³¤¶È¿ØÖÆÎ»£¨·¢ËÍʱÑϸñ°´ÕÕÐÒé2etu£©
|
uint32_t RFREN; //½ÓÊÕGuard Time³¤¶È¿ØÖÆÎ»
|
FunState TREPEN; //»º·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ
|
FunState RREPEN; //½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ
|
FunState DICONV; //´«Êä´ÎÐò·´Ïò±àÂëʹÄÜ
|
|
uint32_t TXEGT; //·¢ËÍʱ²åÈëµÄEGTʱ¼ä£¨ÒÔETUΪµ¥Î»£©
|
uint32_t CLKDIV; //U7816ʱÖÓÊä³ö·ÖƵ¿ØÖƼĴæÆ÷
|
uint32_t PDIV; //U7816Ô¤·ÖƵ¿ØÖƼĴæÆ÷£¬¿ØÖÆ7816ͨÐÅ·ÖÆµ±È£¨²¨ÌØÂÊ£©
|
|
FunState RXIE; //Êý¾Ý½ÓÊÕÖжÏʹÄÜλ¡£¶ÔÓ¦RX_FLAGÖжϱê־λ
|
FunState TXIE; //Êý¾Ý·¢ËÍÖжÏʹÄÜλ¡£¶ÔÓ¦TX_FLAGÖжϱê־λ
|
FunState LSIE; //Ïß·״̬ÖжÏʹÄÜλ¡£¶ÔÓ¦ERROR_FLAGÖжϱê־λ
|
|
}U7816_InitTypeDef;
|
|
|
#define U7816_CR_TXEN_Pos 5 /* U7816ͨµÀ·¢ËÍʹÄÜ¿ØÖÆÎ» (Transmit Enable)1£ºÍ¨µÀ·¢ËÍʹÄÜ£¬¿É·¢ËÍÊý¾Ý0£ºÍ¨µÀ·¢ËͽûÖ¹£¬²»¿É·¢ËÍÊý¾Ý£¬²¢¹Ø¶ÏÊä³ö¶Ë¿Ú£¬½«SCLÐźÅת»¯ÎªµÍµçƽ */
|
#define U7816_CR_TXEN_Msk (0x1U << U7816_CR_TXEN_Pos)
|
|
#define U7816_CR_RXEN_Pos 4 /* U7816ͨµÀ½ÓÊÕʹÄÜ¿ØÖÆÎ» (Receive Enable)1£ºÍ¨µÀ½ÓÊÕʹÄÜ£¬¿É½ÓÊÕÊý¾Ý0£ºÍ¨µÀ½ÓÊÕ½ûÖ¹£¬²»¿É½ÓÊÕÊý¾Ý£¬²¢¹Ø¶ÏÊäÈë¶Ë¿Ú */
|
#define U7816_CR_RXEN_Msk (0x1U << U7816_CR_RXEN_Pos)
|
|
#define U7816_CR_CKOEN_Pos 3 /* U7816ʱÖÓCLKÊä³öʹÄÜ¿ØÖÆÎ» (Clock output Enable)1£º7816ʱÖÓÊä³öʹÄÜ0£º7816ʱÖÓÊä³ö½ûÖ¹ */
|
#define U7816_CR_CKOEN_Msk (0x1U << U7816_CR_CKOEN_Pos)
|
|
#define U7816_CR_HPUAT_Pos 2 /* U7816ͨµÀÊý¾Ý·¢ËÍÇ¿ÉÏÀµç×è×Ô¶¯ÓÐЧ¿ØÖÆÎ» (High-Pullup Automatically)1£ºÊý¾Ý·¢ËÍʱÉÏÀµç×è×Ô¶¯ÓÐЧ£¬½ÓÊÕ̬ÉÏÀµç×èÎÞЧ0£ºÊý¾Ý·¢ËÍʱÉÏÀµç×è×Ô¶¯ÓÐЧ¹¦ÄܽûÖ¹£¬ÉÏÀµç×èÓÉHPUEN£¬LPUEN¿ØÖÆ */
|
#define U7816_CR_HPUAT_Msk (0x1U << U7816_CR_HPUAT_Pos)
|
|
#define U7816_CR_HPUEN_Pos 1 /* U7816ͨµÀÇ¿ÉÏÀʹÄÜ¿ØÖÆÎ» (High-Pullup Enable)1£ºÇ¿ÉÏÀÓÐЧ0£ºÇ¿ÉÏÀÎÞЧ */
|
#define U7816_CR_HPUEN_Msk (0x1U << U7816_CR_HPUEN_Pos)
|
|
#define U7816_FFR_SFREN_Pos 11 /* Guard Time·¢Ëͳ¤¶È¿ØÖÆÎ» (Send long Frame Enable)1£ºGuard timeΪ3 etu0£ºGuard timeΪ2 etu */
|
#define U7816_FFR_SFREN_Msk (0x1U << U7816_FFR_SFREN_Pos)
|
#define U7816_FFR_SFREN_3ETU (0x1U << U7816_FFR_SFREN_Pos)
|
#define U7816_FFR_SFREN_2ETU (0x0U << U7816_FFR_SFREN_Pos)
|
|
#define U7816_FFR_ERSW_Pos 9 /* ERROR SIGNAL¿í¶ÈÑ¡Ôñ (Error Signal Width)11£ºERROR SIGNAL¿í¶ÈΪ1ETU;10£ºERROR SIGNAL¿í¶ÈΪ1.5ETU;01£ºERROR SIGNAL¿í¶ÈΪ2ETU;00£ºERROR SIGNAL¿í¶ÈΪ2ETU; */
|
#define U7816_FFR_ERSW_Msk (0x3U << U7816_FFR_ERSW_Pos)
|
#define U7816_FFR_ERSW_1ETU (0x0U << U7816_FFR_ERSW_Pos)
|
#define U7816_FFR_ERSW_1P5ETU (0x1U << U7816_FFR_ERSW_Pos)
|
#define U7816_FFR_ERSW_2ETU (0x2U << U7816_FFR_ERSW_Pos)
|
|
#define U7816_FFR_ERSGD_Pos 8 /* ERROR SIGNALºóGUARDTIME¿í¶ÈÑ¡Ôñ£¨½öÔÚ·¢ËÍʱÓÐЧ£©
|
(Error Signal Guard Time)1£ºERROR SIGNALºóGUARDTIMEΪ1~1.5ETU¡£0£ºERROR SIGNALºóGUARDTIMEΪ2~2.5ETU¡£ERROR SIGNAL¿í¶ÈΪÕûÊýETUʱGUARDTIMEΪ1.5»ò2.5ETU£»ERROR SIGNAL¿í¶ÈΪ1.5ETUʱGUARDTIMEΪ1»ò2ETU */
|
#define U7816_FFR_ERSGD_Msk (0x1U << U7816_FFR_ERSGD_Pos)
|
#define U7816_FFR_ERSGD_1ETU (0x1U << U7816_FFR_ERSGD_Pos) /* ERROR SIGNALºóGUARDTIMEΪ1~1.5ETU¡£0 */
|
#define U7816_FFR_ERSGD_2ETU (0x0U << U7816_FFR_ERSGD_Pos)
|
|
#define U7816_FFR_BGTEN_Pos 7 /* BGT¿ØÖÆÎ»¡£¿ØÖƽÓÊÕ->·¢ËÍÖ®¼äÊÇ·ñ²åÈëBGT¡£BGTÊǽÓÊÕ->·¢ËÍÖ®¼äÐèÒªµÄ×îСʱ¼ä£¨block guard time enable£©1£ºBGTʹÄÜ£¬²åÈëBlock guard time(12 etu);0£ºBGT½ûÖ¹£¬²»²åÈëBlock guard time(12 etu); */
|
#define U7816_FFR_BGTEN_Msk (0x1U << U7816_FFR_BGTEN_Pos)
|
|
#define U7816_FFR_REP_T_Pos 6 /* ¿ØÖƽÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé³ö´íʱ×Ô¶¯ÖØ·¢´ÎÊý (Repeated Times)1£º3´Î0£º1´Î */
|
#define U7816_FFR_REP_T_Msk (0x1U << U7816_FFR_REP_T_Pos)
|
#define U7816_FFR_REP_T_1TIMES (0x0U << U7816_FFR_REP_T_Pos)
|
#define U7816_FFR_REP_T_3TIMES (0x1U << U7816_FFR_REP_T_Pos)
|
|
#define U7816_FFR_PAR_Pos 4 /* ÆæÅ¼Ð£ÑéÀàÐÍÑ¡Ôñ (Parity)00£ºEven01£ºOdd10£ºAlways 111£º²»Ð£Ñ飬´¦Àí */
|
#define U7816_FFR_PAR_Msk (0x3U << U7816_FFR_PAR_Pos)
|
#define U7816_FFR_PAR_EVEN (0x0U << U7816_FFR_PAR_Pos)
|
#define U7816_FFR_PAR_ODD (0x1U << U7816_FFR_PAR_Pos)
|
#define U7816_FFR_PAR_1ALAWAYS (0x2U << U7816_FFR_PAR_Pos)
|
#define U7816_FFR_PAR_NON (0x3U << U7816_FFR_PAR_Pos)
|
|
#define U7816_FFR_RFREN_Pos 3 /* Guard Time½ÓÊÕ³¤¶È¿ØÖÆÎ» (Receive short Frame )1£ºGuard timeΪ1 etu0£ºGuard timeΪ2 etu */
|
#define U7816_FFR_RFREN_Msk (0x1U << U7816_FFR_RFREN_Pos)
|
#define U7816_FFR_RFREN_1ETU (0x1U << U7816_FFR_RFREN_Pos)
|
#define U7816_FFR_RFREN_2ETU (0x0U << U7816_FFR_RFREN_Pos)
|
|
#define U7816_FFR_TREPEN_Pos 2 /* ·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ (Transmit Repeat Enable)1£ºÊÕµ½ÆæÅ¼Ð£Ñé³ö´í±êÖ¾£¨error signal£©£¬¸ù¾ÝT£½0ÐÒé×Ô¶¯½øÐлط¢¡£ÔÚµ¥Ò»byteÖØ¸´·¢ËÍ´ÎÊý³¬¹ýREP_Tºó£¬ÖÃtx_parity_err±êÖ¾£¬½øÐÐÖжÏ0£ºÊÕµ½Error signalʱ²»½øÐÐ×Ô¶¯»Ø·¢£¬ÖÃtx_parity_err±êÖ¾£¬Ö±½ÓÖÐ¶Ï */
|
#define U7816_FFR_TREPEN_Msk (0x1U << U7816_FFR_TREPEN_Pos)
|
|
#define U7816_FFR_RREPEN_Pos 1 /* ½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ (Receive Repeat Enable)1£ºÆæÅ¼Ð£Ñé´í£¬¸ù¾ÝT=0ÐÒé×Ô¶¯»Ø·¢ERROR SIGNAL¡£µ¥Ò»BYTEÁ¬Ðø½ÓÊÕ´ÎÊý³¬¹ýREP_Tºó£¬ÖÃRX_PARITY_ERR±êÖ¾£¬½øÐÐÖжÏ0£ºÆæÅ¼Ð£Ñé´í£¬²»×Ô¶¯·¢ËÍERROR SIGNAL£¬ÖÃRX_PARITY_ERR±êÖ¾£¬½øÐÐÖÐ¶Ï */
|
#define U7816_FFR_RREPEN_Msk (0x1U << U7816_FFR_RREPEN_Pos)
|
|
#define U7816_FFR_DICONV_Pos 0 /* ´«Êä´ÎÐò£¬±àÂ뷽ʽѡÔñ (bit Direction Conversion)1£º·´Ïò±àÂ룬ÏÈÊÕ·¢MSB£»(ÊÕ·¢Êý¾Ý+УÑéλ)·´Âß¼µçƽ0£ºÕýÏò±àÂ룬ÏÈÊÕ·¢LSB £» (ÊÕ·¢Êý¾Ý+УÑéλ)ÕýÂß¼µçƽ */
|
#define U7816_FFR_DICONV_Msk (0x1U << U7816_FFR_DICONV_Pos)
|
#define U7816_FFR_DICONV_FORWARD (0x0U << U7816_FFR_DICONV_Pos)
|
#define U7816_FFR_DICONV_REVERSE (0x1U << U7816_FFR_DICONV_Pos)
|
|
#define U7816_EGTR_TXEGT_Pos 0 /* ·¢ËÍʱ²åÈëµÄExtra Guard Timeʱ¼ä£¨ÒÔETUΪµ¥Î»£©
|
(Transmit Extra Guard Time) */
|
#define U7816_EGTR_TXEGT_Msk (0xffU << U7816_EGTR_TXEGT_Pos)
|
|
#define U7816_PSC_CLKDIV_Pos 0 /* U7816ʱÖÓÊä³ö·ÖƵ¿ØÖƼĴæÆ÷(Clock Divider)£¬¿ØÖÆ7816¹¤×÷ʱÖÓ·ÖÆµÊý¡£U7816¹¤×÷ʱÖÓÓëAPBCLKµÄ·ÖƵ¹ØÏµ£ºF7816=FAPBCLK/(CLKDIV+1)ÌØÊâÇé¿ö£ºCLK_DIVÉèÖóÉ0»ò1ʱ£¬F7816=FAPBCLK/2×¢£º7816ÐÒ鹿¶¨µÄ¹¤×÷ʱÖÓ·¶Î§ÊÇ1~5MHZ¡£ */
|
#define U7816_PSC_CLKDIV_Msk (0x1fU << U7816_PSC_CLKDIV_Pos)
|
|
#define U7816_BGR_PDIV_Pos 0 /* U7816Ô¤·ÖƵ¿ØÖƼĴæÆ÷(Pre-Divider)£¬¿ØÖÆ7816ͨÐÅ·ÖÆµ±È£¨²¨ÌØÂÊ£©Baud £½ F7816/(PDIV £« 1)
|
|
×¢Ò⣺PDIV×îС¿ÉÓÃÖµÊÇ0x1£¬Ó¦ÓýûÖ¹ÅäÖÃ0x0 */
|
#define U7816_BGR_PDIV_Msk (0xfffU << U7816_BGR_PDIV_Pos)
|
|
#define U7816_RXBUF_RXBUF_Pos 0 /* U7816Êý¾Ý½ÓÊÕ»º´æ¼Ä´æÆ÷ (Receive Buffer) */
|
#define U7816_RXBUF_RXBUF_Msk (0xffU << U7816_RXBUF_RXBUF_Pos)
|
|
#define U7816_TXBUF_TXBUF_Pos 0 /* U7816Êý¾Ý·¢ËÍ»º´æ¼Ä´æÆ÷ (Transmit Buffer) */
|
#define U7816_TXBUF_TXBUF_Msk (0xffU << U7816_TXBUF_TXBUF_Pos)
|
|
#define U7816_IER_RXIE_Pos 2 /* Êý¾Ý½ÓÊÕÖжÏʹÄÜλ¡£¶ÔÓ¦RXIFÖжϱê־λ (Receive Interrupt Enable)1£ºµ±RXIF¼Ä´æÆ÷ÖÃλʱ²úÉú½ÓÊÕÍê³ÉÖжÏ0£º½ûÖ¹½ÓÊÕÍê³ÉÖÐ¶Ï */
|
#define U7816_IER_RXIE_Msk (0x1U << U7816_IER_RXIE_Pos)
|
|
#define U7816_IER_TXIE_Pos 1 /* Êý¾Ý·¢ËÍÖжÏʹÄÜλ¡£¶ÔÓ¦TXIFÖжϱê־λ(Transmit Interrupt Enable)1£ºµ±TXIF¼Ä´æÆ÷ÖÃλʱ²úÉú·¢ËÍÍê³ÉÖжÏ0£º½ûÖ¹·¢ËÍÍê³ÉÖÐ¶Ï */
|
#define U7816_IER_TXIE_Msk (0x1U << U7816_IER_TXIE_Pos)
|
|
#define U7816_IER_LSIE_Pos 0 /* Ïß·״̬ÖжÏʹÄÜλ¡£¶ÔÓ¦ERRIFÖжϱê־λ(Line Status Interrupt Enable)1£ºµ±ERRIF¼Ä´æÆ÷ÖÃλʱ²úÉúÏß·´íÎóÖжÏ0£º½ûÖ¹Ïß·´íÎóÖÐ¶Ï */
|
#define U7816_IER_LSIE_Msk (0x1U << U7816_IER_LSIE_Pos)
|
|
#define U7816_ISR_WAIT_RPT_Pos 18 /* U7816½Ó¿Ú·¢ËÍÁË´íÎóÐźţ¬ÕýÔڵȴý¶Ô·½ÖØ·¢Êý¾Ý£»(Waiting for Repeat flag)״̬»ú½øÈë·¢ËÍ´íÎóÐźÅ״̬ʱÖÃ룬ÊÕµ½Êý¾ÝÆðʼλ»òÕß½øÈë·¢ËÍ״̬ʱӲ¼þÇåÁ㣻Èí¼þÖ»¶Á¡£ */
|
#define U7816_ISR_WAIT_RPT_Msk (0x1U << U7816_ISR_WAIT_RPT_Pos)
|
|
#define U7816_ISR_TXBUSY_Pos 17 /* ·¢ËÍÊý¾Ýæ±êÖ¾¡££¨·¢ËÍÍê³Éºó×Ô¶¯ÇåÁ㣩(Transmission busy flag)1£º´¦ÓÚÊý¾Ý·¢ËÍ״̬£¬·¢ËÍÒÆÎ»¼Ä´æÆ÷ÕýÔÚ·¢ËÍÊý¾Ý¡££¨¿ªÊ¼·¢ËÍÆðʼλÖÃ1£¬Í£Ö¹Î»ÖмäÇåÁ㣩0£ºÊý¾Ý·¢ËÍ¿ÕÏÐ */
|
#define U7816_ISR_TXBUSY_Msk (0x1U << U7816_ISR_TXBUSY_Pos)
|
|
#define U7816_ISR_RXBUSY_Pos 16 /* ½ÓÊÕÊý¾Ýæ±êÖ¾¡££¨½ÓÊÕÍê³Éºó×Ô¶¯ÇåÁ㣩(Receiving busy flag)1£º´¦ÓÚÊý¾Ý½ÓÊÕ״̬£¬½ÓÊÕÒÆÎ»¼Ä´æÆ÷ÕýÔÚ½ÓÊÕÊý¾Ý¡££¨ÊÕµ½ÆðʼλÖÃ1£¬ÊÕµ½Í£Ö¹Î»ÇåÁ㣬Èô½ÓÊÕÊý¾Ý³ö´íÐèÖØ·¢£¬Ôò»Ø·¢error signalʱÇåÁã¡£¼´Êý¾Ý¼°Ð£Ñéλ½ÓÊÕÖ®ºó£¬ÎÞÂÛÊÇ·ñÐèÒªÖØ·¢£¬¶¼ÐèÒª¼°Ê±Çå³ý¸Ã±êÖ¾£©0£ºÊý¾Ý½ÓÊÕ¿ÕÏÐ */
|
#define U7816_ISR_RXBUSY_Msk (0x1U << U7816_ISR_RXBUSY_Pos)
|
|
#define U7816_ISR_TPARERR_Pos 11 /* ·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Transmit Parity Error,write 1 to clear) */
|
#define U7816_ISR_TPARERR_Msk (0x1U << U7816_ISR_TPARERR_Pos)
|
|
#define U7816_ISR_RPARERR_Pos 10 /* ½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Receive Parity Error flag,write 1 to clear) */
|
#define U7816_ISR_RPARERR_Msk (0x1U << U7816_ISR_RPARERR_Pos)
|
|
#define U7816_ISR_FRERR_Pos 9 /* ½ÓÊÕÖ¡¸ñʽ´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Frame Error flag,write 1 to clear)1£ºÖ¡¸ñʽÓдíÎ󣬽ÓÊÕµ½µÄframe×Ö½Ú³¤¶ÈÓÐÎó»ò½ÓÊÕµ½µÄframe»òÕßstopλÓÐÎó0£º½ÓÊÕÊý¾ÝʱÎÞÆæÅ¼Ð£Ñé´íÎó */
|
#define U7816_ISR_FRERR_Msk (0x1U << U7816_ISR_FRERR_Pos)
|
|
#define U7816_ISR_OVERR_Pos 8 /* ½ÓÊÕÒç³ö´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Receive Overflow Error,write 1 to clear)1£º½ÓÊÕ»º³å¼Ä´æÆ÷δ±»¶Á³ö£¬ÓÖ½ÓÊÕµ½ÐµÄÊý¾Ý£¬Òç³ö´íÎó±êÖ¾ÓÐЧ¡£Ô½ÓÊÕ»º³å¼Ä´æÆ÷ÄÚÊý¾Ý±»Ð¸²¸Ç0£ºÎÞÒç³ö´íÎó */
|
#define U7816_ISR_OVERR_Msk (0x1U << U7816_ISR_OVERR_Pos)
|
|
#define U7816_ISR_RXIF_Pos 2 /* ½ÓÊÕÍê³É±êÖ¾(Receive interrupt flag)£¬U7816½Ó¿Ú¿ØÖÆÆ÷ÿÊÕµ½1byteÊý¾Ý£¬¸ù¾Ý½ÓÊÕµÄͨµÀÏàÓ¦·¢³öÒ»´ÎÖжϡ£Ó²¼þÖÃ룬¶ÁÊý¾Ý½ÓÊÕ»º³å¼Ä´æÆ÷ÇåÁã1£º½ÓÊÕµ½1byteÊý¾Ý£¬Êý¾Ý½ÓÊÕ»º³åÆ÷Âú0£ºÎ´½ÓÊÕµ½Êý¾Ý£¬Êý¾Ý½ÓÊÕ»º³åÆ÷¿Õ */
|
#define U7816_ISR_RXIF_Msk (0x1U << U7816_ISR_RXIF_Pos)
|
|
#define U7816_ISR_TXIF_Pos 1 /* ·¢ËÍ»º³åÇø¿Õ±êÖ¾(Transmit interrupt flag)£¬Éϵ縴λºó´Ë±êÖ¾¾Í×Ô¶¯ÖÃ룬±íʾ»º³åÇø¿Õ£¬¿ÉÒÔдÈëÊý¾Ý¡£Èí¼þдÈëÊý¾Ýºó±êÖ¾×Ô¶¯Çå³ý£¬Êý¾Ý´Ó·¢ËÍ»º´æÒÆÈëÒÆÎ»¼Ä´æÆ÷ºóÖÃ11£ºÊý¾Ý·¢ËÍ»º³åÆ÷¿Õ0£ºÊý¾Ý·¢ËÍ»º³åÆ÷ÄÚÓÐÊý¾Ý´ý·¢ËÍ */
|
#define U7816_ISR_TXIF_Msk (0x1U << U7816_ISR_TXIF_Pos)
|
|
#define U7816_ISR_ERRIF_Pos 0 /* ´íÎó±êÖ¾(Error interrupt flag)£¬¼Ä´æÆ÷ÅäÖóö´í»ò´«Êä¹ý³ÌÖгö´í¡£´ËbitÊÇTPARERR¡¢RPARERR¡¢FRERR¡¢OVERRµÄ»ò¡£Èí¼þͨ¹ýÇå³ýÒÔÉÏ´íÎó±êÖ¾¼Ä´æÆ÷À´Çå³ý´Ëbit¡£ */
|
#define U7816_ISR_ERRIF_Msk (0x1U << U7816_ISR_ERRIF_Pos)
|
//Macro_End
|
|
/* Exported functions --------------------------------------------------------*/
|
extern void U7816_Deinit(void);
|
|
/* U7816ͨµÀ·¢ËÍʹÄÜ¿ØÖÆÎ» (Transmit Enable)1£ºÍ¨µÀ·¢ËÍʹÄÜ£¬¿É·¢ËÍÊý¾Ý0£ºÍ¨µÀ·¢ËͽûÖ¹£¬²»¿É·¢ËÍÊý¾Ý£¬²¢¹Ø¶ÏÊä³ö¶Ë¿Ú£¬½«SCLÐźÅת»¯ÎªµÍµçƽ Ïà¹Øº¯Êý */
|
extern void U7816_CR_TXEN_Setable(FunState NewState);
|
extern FunState U7816_CR_TXEN_Getable(void);
|
|
/* U7816ͨµÀ½ÓÊÕʹÄÜ¿ØÖÆÎ» (Receive Enable)1£ºÍ¨µÀ½ÓÊÕʹÄÜ£¬¿É½ÓÊÕÊý¾Ý0£ºÍ¨µÀ½ÓÊÕ½ûÖ¹£¬²»¿É½ÓÊÕÊý¾Ý£¬²¢¹Ø¶ÏÊäÈë¶Ë¿Ú Ïà¹Øº¯Êý */
|
extern void U7816_CR_RXEN_Setable(FunState NewState);
|
extern FunState U7816_CR_RXEN_Getable(void);
|
|
/* U7816ʱÖÓCLKÊä³öʹÄÜ¿ØÖÆÎ» (Clock output Enable)1£º7816ʱÖÓÊä³öʹÄÜ0£º7816ʱÖÓÊä³ö½ûÖ¹ Ïà¹Øº¯Êý */
|
extern void U7816_CR_CKOEN_Setable(FunState NewState);
|
extern FunState U7816_CR_CKOEN_Getable(void);
|
|
/* U7816ͨµÀÊý¾Ý·¢ËÍÇ¿ÉÏÀµç×è×Ô¶¯ÓÐЧ¿ØÖÆÎ» (High-Pullup Automatically)1£ºÊý¾Ý·¢ËÍʱÉÏÀµç×è×Ô¶¯ÓÐЧ£¬½ÓÊÕ̬ÉÏÀµç×èÎÞЧ0£ºÊý¾Ý·¢ËÍʱÉÏÀµç×è×Ô¶¯ÓÐЧ¹¦ÄܽûÖ¹£¬ÉÏÀµç×èÓÉHPUEN£¬LPUEN¿ØÖÆ Ïà¹Øº¯Êý */
|
extern void U7816_CR_HPUAT_Setable(FunState NewState);
|
extern FunState U7816_CR_HPUAT_Getable(void);
|
|
/* U7816ͨµÀÇ¿ÉÏÀʹÄÜ¿ØÖÆÎ» (High-Pullup Enable)1£ºÇ¿ÉÏÀÓÐЧ0£ºÇ¿ÉÏÀÎÞЧ Ïà¹Øº¯Êý */
|
extern void U7816_CR_HPUEN_Setable(FunState NewState);
|
extern FunState U7816_CR_HPUEN_Getable(void);
|
|
/* Guard Time·¢Ëͳ¤¶È¿ØÖÆÎ» (Send long Frame Enable)1£ºGuard timeΪ3 etu0£ºGuard timeΪ2 etu Ïà¹Øº¯Êý */
|
extern void U7816_FFR_SFREN_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_SFREN_Get(void);
|
|
/* ERROR SIGNAL¿í¶ÈÑ¡Ôñ (Error Signal Width)11£ºERROR SIGNAL¿í¶ÈΪ1ETU;10£ºERROR SIGNAL¿í¶ÈΪ1.5ETU;01£ºERROR SIGNAL¿í¶ÈΪ2ETU;00£ºERROR SIGNAL¿í¶ÈΪ2ETU; Ïà¹Øº¯Êý */
|
extern void U7816_FFR_ERSW_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_ERSW_Get(void);
|
|
/* ERROR SIGNALºóGUARDTIME¿í¶ÈÑ¡Ôñ£¨½öÔÚ·¢ËÍʱÓÐЧ£©
|
(Error Signal Guard Time)1£ºERROR SIGNALºóGUARDTIMEΪ1~1.5ETU¡£0£ºERROR SIGNALºóGUARDTIMEΪ2~2.5ETU¡£ERROR SIGNAL¿í¶ÈΪÕûÊýETUʱGUARDTIMEΪ1.5»ò2.5ETU£»ERROR SIGNAL¿í¶ÈΪ1.5ETUʱGUARDTIMEΪ1»ò2ETU Ïà¹Øº¯Êý */
|
extern void U7816_FFR_ERSGD_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_ERSGD_Get(void);
|
|
/* BGT¿ØÖÆÎ»¡£¿ØÖƽÓÊÕ->·¢ËÍÖ®¼äÊÇ·ñ²åÈëBGT¡£BGTÊǽÓÊÕ->·¢ËÍÖ®¼äÐèÒªµÄ×îСʱ¼ä£¨block guard time enable£©1£ºBGTʹÄÜ£¬²åÈëBlock guard time(12 etu);0£ºBGT½ûÖ¹£¬²»²åÈëBlock guard time(12 etu); Ïà¹Øº¯Êý */
|
extern void U7816_FFR_BGTEN_Setable(FunState NewState);
|
extern FunState U7816_FFR_BGTEN_Getable(void);
|
|
/* ¿ØÖƽÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé³ö´íʱ×Ô¶¯ÖØ·¢´ÎÊý (Repeated Times)1£º3´Î0£º1´Î Ïà¹Øº¯Êý */
|
extern void U7816_FFR_REP_T_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_REP_T_Get(void);
|
|
/* ÆæÅ¼Ð£ÑéÀàÐÍÑ¡Ôñ (Parity)00£ºEven01£ºOdd10£ºAlways 111£º²»Ð£Ñ飬´¦Àí Ïà¹Øº¯Êý */
|
extern void U7816_FFR_PAR_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_PAR_Get(void);
|
|
/* Guard Time½ÓÊÕ³¤¶È¿ØÖÆÎ» (Receive short Frame )1£ºGuard timeΪ1 etu0£ºGuard timeΪ2 etu Ïà¹Øº¯Êý */
|
extern void U7816_FFR_RFREN_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_RFREN_Get(void);
|
|
/* ·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ (Transmit Repeat Enable)1£ºÊÕµ½ÆæÅ¼Ð£Ñé³ö´í±êÖ¾£¨error signal£©£¬¸ù¾ÝT£½0ÐÒé×Ô¶¯½øÐлط¢¡£ÔÚµ¥Ò»byteÖØ¸´·¢ËÍ´ÎÊý³¬¹ýREP_Tºó£¬ÖÃtx_parity_err±êÖ¾£¬½øÐÐÖжÏ0£ºÊÕµ½Error signalʱ²»½øÐÐ×Ô¶¯»Ø·¢£¬ÖÃtx_parity_err±êÖ¾£¬Ö±½ÓÖÐ¶Ï Ïà¹Øº¯Êý */
|
extern void U7816_FFR_TREPEN_Setable(FunState NewState);
|
extern FunState U7816_FFR_TREPEN_Getable(void);
|
|
/* ½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ (Receive Repeat Enable)1£ºÆæÅ¼Ð£Ñé´í£¬¸ù¾ÝT=0ÐÒé×Ô¶¯»Ø·¢ERROR SIGNAL¡£µ¥Ò»BYTEÁ¬Ðø½ÓÊÕ´ÎÊý³¬¹ýREP_Tºó£¬ÖÃRX_PARITY_ERR±êÖ¾£¬½øÐÐÖжÏ0£ºÆæÅ¼Ð£Ñé´í£¬²»×Ô¶¯·¢ËÍERROR SIGNAL£¬ÖÃRX_PARITY_ERR±êÖ¾£¬½øÐÐÖÐ¶Ï Ïà¹Øº¯Êý */
|
extern void U7816_FFR_RREPEN_Setable(FunState NewState);
|
extern FunState U7816_FFR_RREPEN_Getable(void);
|
|
/* ´«Êä´ÎÐò£¬±àÂ뷽ʽѡÔñ (bit Direction Conversion)1£º·´Ïò±àÂ룬ÏÈÊÕ·¢MSB£»(ÊÕ·¢Êý¾Ý+УÑéλ)·´Âß¼µçƽ0£ºÕýÏò±àÂ룬ÏÈÊÕ·¢LSB £» (ÊÕ·¢Êý¾Ý+УÑéλ)ÕýÂß¼µçƽ Ïà¹Øº¯Êý */
|
extern void U7816_FFR_DICONV_Set(uint32_t SetValue);
|
extern uint32_t U7816_FFR_DICONV_Get(void);
|
|
/* ·¢ËÍʱ²åÈëµÄExtra Guard Timeʱ¼ä£¨ÒÔETUΪµ¥Î»£©
|
(Transmit Extra Guard Time) Ïà¹Øº¯Êý */
|
extern void U7816_EGTR_Write(uint32_t SetValue);
|
extern uint32_t U7816_EGTR_Read(void);
|
|
/* U7816ʱÖÓÊä³ö·ÖƵ¿ØÖƼĴæÆ÷(Clock Divider)£¬¿ØÖÆ7816¹¤×÷ʱÖÓ·ÖÆµÊý¡£U7816¹¤×÷ʱÖÓÓëAPBCLKµÄ·ÖƵ¹ØÏµ£ºF7816=FAPBCLK/(CLKDIV+1)ÌØÊâÇé¿ö£ºCLK_DIVÉèÖóÉ0»ò1ʱ£¬F7816=FAPBCLK/2×¢£º7816ÐÒ鹿¶¨µÄ¹¤×÷ʱÖÓ·¶Î§ÊÇ1~5MHZ¡£ Ïà¹Øº¯Êý */
|
extern void U7816_PSC_Write(uint32_t SetValue);
|
extern uint32_t U7816_PSC_Read(void);
|
|
/* U7816Ô¤·ÖƵ¿ØÖƼĴæÆ÷(Pre-Divider)£¬¿ØÖÆ7816ͨÐÅ·ÖÆµ±È£¨²¨ÌØÂÊ£©Baud £½ F7816/(PDIV £« 1)
|
|
×¢Ò⣺PDIV×îС¿ÉÓÃÖµÊÇ0x1£¬Ó¦ÓýûÖ¹ÅäÖÃ0x0 Ïà¹Øº¯Êý */
|
extern void U7816_BGR_Write(uint32_t SetValue);
|
extern uint32_t U7816_BGR_Read(void);
|
|
/* U7816Êý¾Ý½ÓÊÕ»º´æ¼Ä´æÆ÷ (Receive Buffer) Ïà¹Øº¯Êý */
|
extern uint32_t U7816_RXBUF_Read(void);
|
|
/* U7816Êý¾Ý·¢ËÍ»º´æ¼Ä´æÆ÷ (Transmit Buffer) Ïà¹Øº¯Êý */
|
extern void U7816_TXBUF_Write(uint32_t SetValue);
|
|
/* Êý¾Ý½ÓÊÕÖжÏʹÄÜλ¡£¶ÔÓ¦RXIFÖжϱê־λ (Receive Interrupt Enable)1£ºµ±RXIF¼Ä´æÆ÷ÖÃλʱ²úÉú½ÓÊÕÍê³ÉÖжÏ0£º½ûÖ¹½ÓÊÕÍê³ÉÖÐ¶Ï Ïà¹Øº¯Êý */
|
extern void U7816_IER_RXIE_Setable(FunState NewState);
|
extern FunState U7816_IER_RXIE_Getable(void);
|
|
/* Êý¾Ý·¢ËÍÖжÏʹÄÜλ¡£¶ÔÓ¦TXIFÖжϱê־λ(Transmit Interrupt Enable)1£ºµ±TXIF¼Ä´æÆ÷ÖÃλʱ²úÉú·¢ËÍÍê³ÉÖжÏ0£º½ûÖ¹·¢ËÍÍê³ÉÖÐ¶Ï Ïà¹Øº¯Êý */
|
extern void U7816_IER_TXIE_Setable(FunState NewState);
|
extern FunState U7816_IER_TXIE_Getable(void);
|
|
/* Ïß·״̬ÖжÏʹÄÜλ¡£¶ÔÓ¦ERRIFÖжϱê־λ(Line Status Interrupt Enable)1£ºµ±ERRIF¼Ä´æÆ÷ÖÃλʱ²úÉúÏß·´íÎóÖжÏ0£º½ûÖ¹Ïß·´íÎóÖÐ¶Ï Ïà¹Øº¯Êý */
|
extern void U7816_IER_LSIE_Setable(FunState NewState);
|
extern FunState U7816_IER_LSIE_Getable(void);
|
|
/* U7816½Ó¿Ú·¢ËÍÁË´íÎóÐźţ¬ÕýÔڵȴý¶Ô·½ÖØ·¢Êý¾Ý£»(Waiting for Repeat flag)״̬»ú½øÈë·¢ËÍ´íÎóÐźÅ״̬ʱÖÃ룬ÊÕµ½Êý¾ÝÆðʼλ»òÕß½øÈë·¢ËÍ״̬ʱӲ¼þÇåÁ㣻Èí¼þÖ»¶Á¡£ Ïà¹Øº¯Êý */
|
extern FlagStatus U7816_ISR_WAIT_RPT_Chk(void);
|
|
/* ·¢ËÍÊý¾Ýæ±êÖ¾¡££¨·¢ËÍÍê³Éºó×Ô¶¯ÇåÁ㣩(Transmission busy flag)1£º´¦ÓÚÊý¾Ý·¢ËÍ״̬£¬·¢ËÍÒÆÎ»¼Ä´æÆ÷ÕýÔÚ·¢ËÍÊý¾Ý¡££¨¿ªÊ¼·¢ËÍÆðʼλÖÃ1£¬Í£Ö¹Î»ÖмäÇåÁ㣩0£ºÊý¾Ý·¢ËÍ¿ÕÏÐ Ïà¹Øº¯Êý */
|
extern FlagStatus U7816_ISR_TXBUSY_Chk(void);
|
|
/* ½ÓÊÕÊý¾Ýæ±êÖ¾¡££¨½ÓÊÕÍê³Éºó×Ô¶¯ÇåÁ㣩(Receiving busy flag)1£º´¦ÓÚÊý¾Ý½ÓÊÕ״̬£¬½ÓÊÕÒÆÎ»¼Ä´æÆ÷ÕýÔÚ½ÓÊÕÊý¾Ý¡££¨ÊÕµ½ÆðʼλÖÃ1£¬ÊÕµ½Í£Ö¹Î»ÇåÁ㣬Èô½ÓÊÕÊý¾Ý³ö´íÐèÖØ·¢£¬Ôò»Ø·¢error signalʱÇåÁã¡£¼´Êý¾Ý¼°Ð£Ñéλ½ÓÊÕÖ®ºó£¬ÎÞÂÛÊÇ·ñÐèÒªÖØ·¢£¬¶¼ÐèÒª¼°Ê±Çå³ý¸Ã±êÖ¾£©0£ºÊý¾Ý½ÓÊÕ¿ÕÏÐ Ïà¹Øº¯Êý */
|
extern FlagStatus U7816_ISR_RXBUSY_Chk(void);
|
|
/* ·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Transmit Parity Error,write 1 to clear) Ïà¹Øº¯Êý */
|
extern void U7816_ISR_TPARERR_Clr(void);
|
extern FlagStatus U7816_ISR_TPARERR_Chk(void);
|
|
/* ½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Receive Parity Error flag,write 1 to clear) Ïà¹Øº¯Êý */
|
extern void U7816_ISR_RPARERR_Clr(void);
|
extern FlagStatus U7816_ISR_RPARERR_Chk(void);
|
|
/* ½ÓÊÕÖ¡¸ñʽ´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Frame Error flag,write 1 to clear)1£ºÖ¡¸ñʽÓдíÎ󣬽ÓÊÕµ½µÄframe×Ö½Ú³¤¶ÈÓÐÎó»ò½ÓÊÕµ½µÄframe»òÕßstopλÓÐÎó0£º½ÓÊÕÊý¾ÝʱÎÞÆæÅ¼Ð£Ñé´íÎó Ïà¹Øº¯Êý */
|
extern void U7816_ISR_FRERR_Clr(void);
|
extern FlagStatus U7816_ISR_FRERR_Chk(void);
|
|
/* ½ÓÊÕÒç³ö´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Receive Overflow Error,write 1 to clear)1£º½ÓÊÕ»º³å¼Ä´æÆ÷δ±»¶Á³ö£¬ÓÖ½ÓÊÕµ½ÐµÄÊý¾Ý£¬Òç³ö´íÎó±êÖ¾ÓÐЧ¡£Ô½ÓÊÕ»º³å¼Ä´æÆ÷ÄÚÊý¾Ý±»Ð¸²¸Ç0£ºÎÞÒç³ö´íÎó Ïà¹Øº¯Êý */
|
extern void U7816_ISR_OVERR_Clr(void);
|
extern FlagStatus U7816_ISR_OVERR_Chk(void);
|
|
/* ½ÓÊÕÍê³É±êÖ¾(Receive interrupt flag)£¬U7816½Ó¿Ú¿ØÖÆÆ÷ÿÊÕµ½1byteÊý¾Ý£¬¸ù¾Ý½ÓÊÕµÄͨµÀÏàÓ¦·¢³öÒ»´ÎÖжϡ£Ó²¼þÖÃ룬¶ÁÊý¾Ý½ÓÊÕ»º³å¼Ä´æÆ÷ÇåÁã1£º½ÓÊÕµ½1byteÊý¾Ý£¬Êý¾Ý½ÓÊÕ»º³åÆ÷Âú0£ºÎ´½ÓÊÕµ½Êý¾Ý£¬Êý¾Ý½ÓÊÕ»º³åÆ÷¿Õ Ïà¹Øº¯Êý */
|
extern FlagStatus U7816_ISR_RXIF_Chk(void);
|
|
/* ·¢ËÍ»º³åÇø¿Õ±êÖ¾(Transmit interrupt flag)£¬Éϵ縴λºó´Ë±êÖ¾¾Í×Ô¶¯ÖÃ룬±íʾ»º³åÇø¿Õ£¬¿ÉÒÔдÈëÊý¾Ý¡£Èí¼þдÈëÊý¾Ýºó±êÖ¾×Ô¶¯Çå³ý£¬Êý¾Ý´Ó·¢ËÍ»º´æÒÆÈëÒÆÎ»¼Ä´æÆ÷ºóÖÃ11£ºÊý¾Ý·¢ËÍ»º³åÆ÷¿Õ0£ºÊý¾Ý·¢ËÍ»º³åÆ÷ÄÚÓÐÊý¾Ý´ý·¢ËÍ Ïà¹Øº¯Êý */
|
extern FlagStatus U7816_ISR_TXIF_Chk(void);
|
|
/* ´íÎó±êÖ¾(Error interrupt flag)£¬¼Ä´æÆ÷ÅäÖóö´í»ò´«Êä¹ý³ÌÖгö´í¡£´ËbitÊÇTPARERR¡¢RPARERR¡¢FRERR¡¢OVERRµÄ»ò¡£Èí¼þͨ¹ýÇå³ýÒÔÉÏ´íÎó±êÖ¾¼Ä´æÆ÷À´Çå³ý´Ëbit¡£ Ïà¹Øº¯Êý */
|
extern FlagStatus U7816_ISR_ERRIF_Chk(void);
|
|
/* U7816ÍêÕû²ÎÊý³õʼ»¯º¯Êý */
|
void U7816_Init( U7816_InitTypeDef* para);
|
|
|
|
//Announce_End
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif /* __FM33A0XXEV_U7816_H */
|