/** ****************************************************************************** * @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 etu 0£º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£ºEven 01£ºOdd 10£ºAlways 1 11£º²»Ð£Ñ飬´¦Àí */ #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 etu 0£º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)£¬Éϵ縴λºó´Ë±êÖ¾¾Í×Ô¶¯ÖÃ룬±íʾ»º³åÇø¿Õ£¬¿ÉÒÔдÈëÊý¾Ý¡£Èí¼þдÈëÊý¾Ýºó±êÖ¾×Ô¶¯Çå³ý£¬Êý¾Ý´Ó·¢ËÍ»º´æÒÆÈëÒÆÎ»¼Ä´æÆ÷ºóÖÃ1 1£ºÊý¾Ý·¢ËÍ»º³åÆ÷¿Õ 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 etu 0£º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£ºEven 01£ºOdd 10£ºAlways 1 11£º²»Ð£Ñ飬´¦Àí Ïà¹Øº¯Êý */ 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 etu 0£º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)£¬Éϵ縴λºó´Ë±êÖ¾¾Í×Ô¶¯ÖÃ룬±íʾ»º³åÇø¿Õ£¬¿ÉÒÔдÈëÊý¾Ý¡£Èí¼þдÈëÊý¾Ýºó±êÖ¾×Ô¶¯Çå³ý£¬Êý¾Ý´Ó·¢ËÍ»º´æÒÆÈëÒÆÎ»¼Ä´æÆ÷ºóÖÃ1 1£ºÊý¾Ý·¢ËÍ»º³åÆ÷¿Õ 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 */