久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3484|回復: 4
收起左側

WK2124串口擴展芯片資料 STM32程序demo等資料

[復制鏈接]
ID:69057 發表于 2021-9-8 10:41 | 顯示全部樓層 |閱讀模式
       WK2124是成都為開微生產的SPI擴4路UART的芯片,主接口SPI支持10波特率,有4個獨立的子串口,每個獨立的子串口都有256個字節的發送FIFO、接收FIFO,特別適合于需要多個串口主機設備。資料里有數據手冊、原理圖、MCU驅動、Linux下驅動等。

  1.產品概述
       WK2124是SPITM接口的4通道UART器件,WK2124實現SPI橋接/擴展4個增強功能串口(UART)的功能。
     擴展的子通道的UART具備如下功能特點:
     每個子通道UART的波特率、字長、校驗格式可以獨立設置,最高可以提供2Mbps的通信速率。
     每個子通道可以獨立設置工作在IrDA紅外通信。
     每個子通道具備收/發獨立的256 BYTE FIFO,FIFO的中斷可按用戶需求進行編程觸發點。
     WK2124采用SSOP20綠色環保的無鉛封裝,可以工作在2.5~5.0V的寬工作電壓范圍,具備可配置自動休眠/喚醒功能。
[注]:SPITM 為MOTOLORA公司的注冊商標。
  2.基本特性
  2.1 總體特性

    低功耗設計,可以配置自動休眠,自動喚醒模式(uS 級喚醒)
    超大硬件收發緩存,支持256級FIFO
    寬工作電壓設計,工作電壓為2.5V~5.0V
    精簡的配置寄存器和控制字,操作簡單可靠
    提供工業級
    高速CMOS工藝,子串口速率最高可達2Mbps@5V、1.5Mbps@3.3V、1Mbps@2.5V
    采用符合綠色環保政策的SSOP20無鉛封裝

  2.2 擴展子通道UART特性

    子通道串口獨立配置,高速、靈活:

     每個子串口為全雙工,每個子串口可以通過軟件開啟/關閉
     波特率可以獨立設置,子串口最高可以達到2Mbit/s
     每個子串口字符格式包括數據長度、停止位數、奇偶校驗模式可以獨立設置
     完善的子串口狀態查詢功能
     可以實現對單個子串口軟件復位

    FIFO功能:

    每個子串口具備獨立的256級發送FIFO,發送FIFO觸發點可按用戶需求進行編程
    每個子串口具備獨立的256接收FIFO,接收FIFO觸發點可按用戶需求進行編程
    軟件FIFO使能和清空
    FIFO狀態和計數器輸出

    錯誤檢測:

    支持奇偶校驗錯,數據幀錯誤、溢出錯誤及Line-Break錯誤檢測
    支持起始位錯誤檢測   

    中斷特點:

     具備子串口接收FIFO超時中斷
     支持Line-Break錯誤中斷

    內置符合SIR標準的IrDA紅外收發編解碼器,傳輸速度可達115.2K bit/s

  2.3 SPI主接口特性

    最高速度10M bit/s
    僅支持SPI從模式
    SPI模式0
    支持最長256字節連續收發

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "wk2xxx.h"
  6. #include "wk2xxx_test.h"
  7. #include "spi.h"
  8. #include "exti.h"
  9. /*
  10. 目前stm32和WK2XXX 硬件連接關系
  11. 復位RST:PB8
  12. cs:PA4
  13. clk:PA5
  14. mosi:PA7
  15. miso:PA6
  16. */

  17. void EXTI1_IRQHandler(void)
  18. {
  19.          u8 gifr,rxbuf[256];
  20.          int rxlen;
  21.   printf("IN EXTI2_IRQ!!!!\n");
  22.         /*關閉LED燈*/
  23.         LED1(LED_OFF);
  24.         LED2(LED_OFF);
  25.         LED3(LED_OFF);
  26.         LED4(LED_OFF);

  27.         if(EXTI_GetFlagStatus(EXTI_Line1)!= RESET)
  28.         {           EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE1上的中斷標志位  
  29.                         gifr=WkReadGReg(WK2XXX_GIFR);/**/
  30.                 do{
  31.                         if(gifr&WK2XXX_UT1INT)//判斷子串口1是否有中斷
  32.                         { /*數據處理*/
  33.                                                 /*數據接收*/
  34.                                                 rxlen=wk_RxChars(1,rxbuf);//一次接收的數據不會超過256Byte
  35.                                                 /*數據發送*/
  36.                                                 //把接收的數據發送出去
  37.                                                 wk_TxChars(1,rxlen,rxbuf);

  38.                         }
  39.                        
  40.                         if(gifr&WK2XXX_UT2INT)//判斷子串口2是否有中斷
  41.                         {
  42.                                 /*數據接收*/
  43.                                                 rxlen=wk_RxChars(2,rxbuf);//一次接收的數據不會超過256Byte
  44.                                                 /*數據發送*/
  45.                                                 //把接收的數據發送出去
  46.                                                 wk_TxChars(2,rxlen,rxbuf);
  47.                        
  48.                           }
  49.                         if(gifr&WK2XXX_UT3INT)//判斷子串口3是否有中斷
  50.                         {
  51.                                 /*數據接收*/
  52.                                                 rxlen=wk_RxChars(3,rxbuf);//一次接收的數據不會超過256Byte
  53.                                                 /*數據發送*/
  54.                                                 //把接收的數據發送出去
  55.                                                 wk_TxChars(3,rxlen,rxbuf);
  56.                                    // printf("port!!!!\n");
  57.                         }
  58.                         if(gifr&WK2XXX_UT4INT)//判斷子串口4是否有中斷
  59.                         {
  60.                                 /*數據接收*/
  61.                                                 rxlen=wk_RxChars(4,rxbuf);//一次接收的數據不會超過256Byte
  62.                                                 /*數據發送*/
  63.                                                 //把接收的數據發送出去
  64.                                    //wk_TxChars(4,rxlen,rxbuf);
  65.                         }
  66.                        
  67.                 gifr=WkReadGReg(WK2XXX_GIFR);
  68.                 //printf("IN EXTI2_IRQ GIFR:0X%X !!!\n",gifr);
  69.                 }while(gifr&0x0f);
  70.                 printf("IN EXTI2_IRQ over! !!!\n");
  71.         }
  72. }
  73. int main(void)
  74. {       
  75.          
  76.         //wk2xxx相關定義
  77.   unsigned char dat1,sendbuf[256]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0x12};
  78.         int len,scr;
  79.   LED_Init();
  80.         delay_init();                     //延時函數初始化       
  81.         NVIC_Configuration();// 設置中斷優先級分組
  82.         uart_init(115200);         //串口初始化為115200
  83.   WK_SPI_Init();//初始化SPI總線
  84.         /*讀寫GNEA,測試主接口通信是否成功*/
  85.         dat1=WkReadGReg(WK2XXX_GENA);
  86.         printf("gena=0x%x.\n",dat1);

  87.         /*硬件復位芯片*/
  88.         WK_RstInit();
  89.         /*初始化子串口*/
  90.         Wk_Init(1);
  91.         Wk_Init(2);
  92.         Wk_Init(3);
  93.         Wk_Init(4);
  94.         /*設置子串口波特率*/
  95.         Wk_SetBaud(1,115200);
  96.         Wk_SetBaud(2,115200);
  97.         Wk_SetBaud(3,115200);
  98.         Wk_SetBaud(4,115200);
  99.         /*使能485*/
  100.         //WK_RS485(1);
  101.         //WK_RS485(2);
  102.         //WK_RS485(3);
  103.         //WK_RS485(4);
  104.         EXTIX_Init();//初始化CPU外部中斷
  105. while(1)
  106. { /*打開LED*/
  107.         LED1(LED_ON);
  108.         LED2(LED_ON);
  109.         LED3(LED_ON);
  110.         LED4(LED_ON);
  111.         delay_ms(10);

  112. Exti_Disable();/*關閉外部中斷響應*/
  113. /*中斷屏蔽區,這樣可以防止中斷響應打亂spi的操作時序*/
  114. /*通常在中斷函數外部操作讀寫寄存器的時候,最好關斷中斷響應,但是這個時間也不要過長,過長導致子串口溢出,從而導致數據丟失*/
  115. /*如果對于大數據需要發送,一次操作不要超過256,最好不要讓程序阻塞在發送中*/
  116. //len=wk_TxLen(4);/*判斷子串口4能寫入數據的個數*/
  117. //wk_TxChars(4,len,sendbuf);/*寫入len個數據進入發送fifo*/
  118.         WkWriteSFifo(4,sendbuf,10);
  119. Exti_Enable();/*開啟外部中斷響應*/
  120. }

  121. }
復制代碼
51hei.png
所有資料51hei附件下載:
WK2124 Resources V1.1.7z (3.76 MB, 下載次數: 47)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:169559 發表于 2021-9-8 16:47 | 顯示全部樓層
如何申請2片樣片試試啊?
回復

使用道具 舉報

ID:65369 發表于 2022-5-31 09:59 | 顯示全部樓層
官方提供的例子啊
回復

使用道具 舉報

ID:142059 發表于 2022-6-3 14:12 | 顯示全部樓層
cmyldd 發表于 2022-5-31 09:59
官方提供的例子啊

http://www.zg4o1577.cn/bbs/dpj-220195-1.html這是我參考官例改的測試過的
回復

使用道具 舉報

ID:466702 發表于 2022-6-12 10:40 | 顯示全部樓層
樓上代碼測試有效,讀全局寄存器是0x34,謝謝。能不能放個中斷的代碼出來
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩久久 | 天天干天天玩天天操 | 久久久精品视频一区二区三区 | 久草网在线视频 | a黄视频| 高清免费av | 免费欧美| 久久免费福利 | 国产精品久久久久久 | 国产精品免费观看 | 欧美 日本 国产 | 精品成人在线观看 | 亚洲精品美女视频 | 国产高清精品在线 | 国产一区二区三区色淫影院 | 亚洲精品久久区二区三区蜜桃臀 | 国产精品不卡一区二区三区 | 欧洲一区视频 | 夜夜艹| 在线小视频 | 国产在线不卡视频 | 欧美日韩亚 | 天天拍天天射 | 国产成人在线视频播放 | 本道综合精品 | 日韩中文字幕在线不卡 | 欧美国产日本一区 | 久草在线视频中文 | 精品国产99| 国产精品99久久久精品免费观看 | 久久人操| 国产在线观看一区二区三区 | 在线观看日本高清二区 | 一区二区免费高清视频 | 欧美一区二区在线看 | 天天操夜夜操 | 国产成人在线观看免费 | 综合二区 | 视频1区2区| 成人免费视频网站在线看 | 日本精品久久久久 |