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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12699|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

SI4438的串口收發(fā)STM32例程

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:234114 發(fā)表于 2017-9-19 14:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
SI4438 Demo 程序說明文檔
工程說明:
    1、Demo 工程是基于Stm32F103 單片機(jī)在MDK(KEIL5)平臺(tái)下對(duì)SI4438 無線模塊的開發(fā)例程,用戶可在此基礎(chǔ)上加強(qiáng)對(duì)SI4438的理解,也可在此基礎(chǔ)上進(jìn)行移植以便對(duì)SI4438 模塊進(jìn)行2 次開發(fā)。
    2、Demo 工程主要實(shí)現(xiàn)兩個(gè)功能 (TX/RX ):
       一、發(fā)送功能:模塊配置為發(fā)送功能,在發(fā)送模式 1,每秒發(fā)送一次固定字符串 “ashining”;在發(fā)送模式2,通過串口發(fā)送自定義數(shù)據(jù)(如www.zg4o1577.cn )。發(fā)送模式1 和發(fā)送模式2 通過按鍵切換。
       二、接收功能:模塊配置為接收功能,接收數(shù)據(jù)并通過串口將接收到的數(shù)據(jù)輸出, 串口波特率默認(rèn)配置為9600。
    3、Demo 程序提供了硬件SPI 接口和軟件模擬SPI 接口(基于C52 的Demo 程序只有軟件模擬SPI 接口),用戶在移植時(shí)可根據(jù)不同的PCB 布局和實(shí)際應(yīng)用需求進(jìn)行選擇。
    4、Demo 程序開始運(yùn)行時(shí),兩個(gè)LED 燈會(huì)閃爍3 個(gè)周期(一亮一滅為一個(gè)周期),代表無線模塊已經(jīng)初始化完成處于發(fā)送狀態(tài)或接收狀態(tài)。如果上電兩個(gè)LED 沒有正常閃爍,說明無線模塊初始化失敗或未檢測到無線模塊,建議斷電重新插拔芯片再上電。

工程配置:
    1、發(fā)送功能和接收功能的選擇切換:Demo  工程只需經(jīng)過簡單的配置修改就可以在發(fā)
       送功能和接收功能之間進(jìn)行切換,采用這種編寫方式的目的是為了讓用戶更加容易
       理解SI4438 無線模塊發(fā)送和接收功能的操作方式到底有何不同,讓用戶更容易掌握
       對(duì)無線模塊的操作并進(jìn)行2 次開發(fā)。
       發(fā)送和接收功能切換方法(以從默認(rèn)的發(fā)送功能切換到接收功能為例):解壓Demo
       工程壓縮包,在Demo_SI4438_Stm32F103\Project_SI4438\Source_Files\app\inc 文件
       夾下打開main.h 頭文件(或者通過開發(fā)軟件打開工程找到main.h),該頭文件在包
       含其他相關(guān)頭文件后,便是關(guān)于工程配置的宏定義,第一個(gè)宏定義為發(fā)送功能和接
       收功能選擇切換使用的宏定義。第一個(gè)宏定義為#define __SI4438_TX_TEST__,保留
       該宏定義工程就被配置成發(fā)送功能(默認(rèn)工程配置為發(fā)送功能,即保留了該宏定義),
       通過屏蔽該宏定義(在#define          前加“//”),可將工程由默認(rèn)的發(fā)送功能配置成接收
       功能。

    2、硬件SPI 接口和軟件模擬SPI 接口的選擇切換:為了使Demo 程序適應(yīng)性更強(qiáng),可
       移植性更高,Demo 程序提供了硬件SPI 接口和軟件模擬SPI 接口可供用戶選擇。程
       序默認(rèn)配置為硬件SPI 接口 (部分單片機(jī)無硬件SPI 接口如C52 單片機(jī),這種情況
       下只有軟件模擬SPI 接口,固不存在SPI 接口的切換)。
       硬件SPI 接口和軟件模擬SPI 接口的切換方法:切換方法同發(fā)送、接收功能的切換
       方法一致,main.h 中第二個(gè)宏定義為#define __USE_SOFT_SPI_INTERFACE,屏蔽該宏
       定義為選擇硬件SPI 接口(工程默認(rèn)配置為選擇硬件SPI 接口),保留該宏定義為選
       擇軟件模擬SPI 接口。

       注:在修改工程配置后,需要重新編譯再下載修改才會(huì)起效。
           SI4463 和SI4438 程序除了配置頭文件不一樣,其他一樣。

開發(fā)環(huán)境:
      1、優(yōu)化選項(xiàng)選擇默認(rèn)值,即不做修改。
      2、編輯環(huán)境設(shè)置(適用于Demo 程序V3.0 版Keil 平臺(tái)):
         Edit -> Configuration  目錄下:
              Editor -> Tab size 推薦設(shè)置為4,有利于工程中代碼和注釋的對(duì)齊。
              Enconding 推薦設(shè)置為 UTF-8 的編碼格式,兼容性較好,不易出現(xiàn)亂碼。

stm32單片機(jī)源程序(主程序)如下:
  1. /**
  2.   ******************************************************************************
  3.   * @author  澤耀科技 ASHINING
  4.   * @version V3.0
  5.   * @date    10-08
  6.   * @brief   主函數(shù)C文件
  7.   ******************************************************************************
  8.   * @attention
  9.   ******************************************************************************
  10.   */

  11. #include "main.h"                                //main.h 中含有TX/RX、軟件SPI/硬件SPI選擇配置選項(xiàng)


  12. const char *g_Ashining = "ashining";
  13. uint8_t g_TxMode = 0, g_UartRxFlag = 0;
  14. uint8_t g_UartRxBuffer[ 64 ] = { 0 };
  15. uint8_t g_SI4463ItStatus[ 9 ] = { 0 };
  16. uint8_t g_SI4463RxBuffer[ 64 ] = { 0 };



  17. /**
  18.   * @brief :主函數(shù)
  19.   * @param :無
  20.   * @note  :無
  21.   * @retval:無
  22.   */
  23. int main( void )
  24. {        
  25.         uint16_t i = 0;

  26.         //串口初始化波特率 9600
  27.         drv_uart_init( 9600 );
  28.         
  29.         //延時(shí)初始化
  30.         drv_delay_init( );
  31.         
  32.         //LED初始化
  33.         drv_led_init( );
  34.         
  35.         //SPI初始化
  36.         drv_spi_init( );
  37.         
  38.         //SI4463初始化        
  39.         SI446x_Init( );
  40.         
  41.         led_red_off( );
  42.         led_green_off( );
  43.         for( i = 0; i < 6; i++ )                //模塊初始化完成,LED燈閃爍3個(gè)周期
  44.         {
  45.                 led_red_flashing( );
  46.                 led_green_flashing( );
  47.                 drv_delay_500Ms( 1 );
  48.         }
  49.                
  50.         
  51. #ifdef        __SI4438_TX_TEST__               
  52. //=========================================================================================//        
  53. //*****************************************************************************************//
  54. //************************************* 發(fā)送 **********************************************//
  55. //*****************************************************************************************//
  56. //=========================================================================================//        
  57.         
  58.         //按鍵初始化
  59.         drv_button_init( );                                //Demo程序中 只有在發(fā)送時(shí)才會(huì)使用按鍵
  60.         
  61.         while( 1 )        
  62.         {
  63.                 //模式切換
  64.                 if( BUTOTN_PRESS_DOWN == drv_button_check( ))        //檢查按鍵動(dòng)作
  65.                 {
  66.                         g_TxMode = 1 - g_TxMode;                //模式會(huì)在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之間切換
  67.                         
  68.                         //狀態(tài)顯示清零
  69.                         led_green_off( );
  70.                         led_red_off( );
  71.                         
  72.                         if( TX_MODE_1 == g_TxMode )
  73.                         {
  74.                                 for( i = 0; i < 6; i++ )                //固定發(fā)送模式,紅燈閃爍3次
  75.                                 {
  76.                                         led_red_flashing( );        
  77.                                         drv_delay_500Ms( 1 );               
  78.                                 }
  79.                         }
  80.                         else
  81.                         {
  82.                                 for( i = 0; i < 6; i++ )                //串口發(fā)送模式,綠燈閃爍3次
  83.                                 {
  84.                                         led_green_flashing( );        
  85.                                         drv_delay_500Ms( 1 );
  86.                                 }
  87.                         }
  88.                 }
  89.                
  90.                 //發(fā)送固定字符串
  91.                 if( TX_MODE_1 == g_TxMode )
  92.                 {
  93.                         //發(fā)送數(shù)據(jù)
  94.                         #if PACKET_LENGTH == 0
  95.                                 SI446x_Send_Packet( (uint8_t *)g_Ashining, 8, 0, 0 );
  96.                         #else
  97.                                 SI446x_Send_Packet( (uint8_t *)g_Ashining, PACKET_LENGTH, 0, 0 );
  98.                         #endif
  99.                         drv_delay_500Ms( 1 );        
  100.                         led_red_flashing( );                        //1S左右發(fā)送一包 每發(fā)送一包紅燈閃爍一次
  101.                         drv_delay_500Ms( 1 );        
  102.                 }
  103.                 else        //發(fā)送串口接收到的字符串
  104.                 {        
  105.                         //查詢串口數(shù)據(jù)
  106.                         i = drv_uart_rx_bytes( g_UartRxBuffer );
  107.                         
  108.                         if( 0 != i )
  109.                         {
  110.                                 if( 16 < i )
  111.                                 {
  112.                                         i = 0;
  113.                                 }
  114.                                 #if PACKET_LENGTH == 0
  115.                                         SI446x_Send_Packet( (uint8_t *)g_UartRxBuffer, i, 0, 0 );
  116.                                 #else
  117.                                         SI446x_Send_Packet( (uint8_t *)g_UartRxBuffer, PACKET_LENGTH, 0, 0 );
  118.                                 #endif
  119.                                 led_red_flashing( );
  120.                         }
  121.                 }
  122.         }
  123.         
  124. #else               
  125. //=========================================================================================//        
  126. //*****************************************************************************************//
  127. //************************************* 接收 **********************************************//
  128. //*****************************************************************************************//
  129. //=========================================================================================//        
  130.         
  131.         while( 1 )
  132.         {
  133.                 SI446x_Interrupt_Status( g_SI4463ItStatus );                //讀中斷狀態(tài)
  134.                
  135.                 if( g_SI4463ItStatus[ 3 ] & ( 0x01 << 4 ))
  136.         {
  137.                         i = SI446x_Read_Packet( g_SI4463RxBuffer );                //讀FIFO數(shù)據(jù)
  138.                         if( i != 0 )
  139.                         {
  140.                                 led_green_flashing( );
  141.                                 drv_uart_tx_bytes( g_SI4463RxBuffer,i );        //輸出接收到的字節(jié)
  142.                         }
  143.                
  144.                         SI446x_Change_Status( 6 );
  145.                         while( 6 != SI446x_Get_Device_Status( ));
  146.                         SI446x_Start_Rx(  0, 0, PACKET_LENGTH,0,0,3 );
  147.                 }
  148.                 else
  149.                 {
  150.                         if( 3000 == i++ )
  151.                         {
  152.                                 i = 0;
  153.                                 SI446x_Init( );
  154. ……………………
  155. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼

所有資料51hei提供下載(完整代碼+說明):
Demo_SI4438_Stm32F103.zip (764.69 KB, 下載次數(shù): 233)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:225634 發(fā)表于 2018-3-15 19:01 | 只看該作者
謝謝樓主!
回復(fù)

使用道具 舉報(bào)

板凳
ID:373 發(fā)表于 2018-4-17 18:19 | 只看該作者
學(xué)習(xí)下,還沒有用過這款發(fā)射芯片
回復(fù)

使用道具 舉報(bào)

地板
ID:283462 發(fā)表于 2018-5-25 14:15 | 只看該作者
正需要,正好學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:372320 發(fā)表于 2018-7-16 09:58 | 只看該作者
謝謝樓主,正是我需要的
回復(fù)

使用道具 舉報(bào)

6#
ID:388156 發(fā)表于 2018-8-20 15:10 | 只看該作者
沒分啊,有沒有分享一下

評(píng)分

參與人數(shù) 1黑幣 +10 收起 理由
春風(fēng)十里吹 + 10 打償你10分吧

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:94371 發(fā)表于 2018-8-20 23:53 | 只看該作者
正在找,不錯(cuò), 3q.
回復(fù)

使用道具 舉報(bào)

8#
ID:359322 發(fā)表于 2018-11-12 09:49 | 只看該作者
下載了    正在移植到8位機(jī)   到時(shí)把代碼也共享出來
回復(fù)

使用道具 舉報(bào)

9#
ID:471097 發(fā)表于 2019-1-21 11:15 | 只看該作者
發(fā)送模式2,一次最長可以發(fā)送多少個(gè)字節(jié)
回復(fù)

使用道具 舉報(bào)

10#
ID:260557 發(fā)表于 2019-1-22 10:48 | 只看該作者
謝謝樓主!
回復(fù)

使用道具 舉報(bào)

11#
ID:10007 發(fā)表于 2019-7-25 22:27 | 只看該作者
正需要,正好學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

12#
ID:578662 發(fā)表于 2019-11-16 14:25 | 只看該作者
  有沒有 同志,分享一下?沒分。。
回復(fù)

使用道具 舉報(bào)

13#
ID:960912 發(fā)表于 2021-8-17 13:55 | 只看該作者
有沒有哪位能送一點(diǎn)分的,簽到攢夠一定記得還,謝謝!
回復(fù)

使用道具 舉報(bào)

14#
ID:323456 發(fā)表于 2023-3-4 17:25 | 只看該作者
十分感謝,全網(wǎng)都沒找到幾篇關(guān)于4438的,如果我最后學(xué)會(huì)了,一定記你一功(開個(gè)玩笑)
回復(fù)

使用道具 舉報(bào)

15#
ID:323456 發(fā)表于 2023-3-4 17:29 | 只看該作者
如果學(xué)會(huì)了記你一功
回復(fù)

使用道具 舉報(bào)

16#
ID:1109212 發(fā)表于 2024-1-24 09:26 | 只看該作者
發(fā)送不需要切換到發(fā)送模式嘛?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人精品一区 | www.天天操| 在线观看日本高清二区 | 久久久www成人免费无遮挡大片 | 日韩精品无码一区二区三区 | www.黄色在线观看 | 日韩aⅴ在线观看 | 精品亚洲永久免费精品 | 国产乱码精品一区二区三区中文 | 丁香婷婷在线视频 | 一区二区在线免费观看视频 | 久久久中文 | 婷婷久久综合 | 久久久精品一区二区三区四季av | 国产精品久久国产精品 | 午夜伦4480yy私人影院 | 国产伦一区二区三区视频 | 久久午夜电影 | 黄色91在线| 91xx在线观看 | 欧美 日韩 视频 | 超级乱淫av片免费播放 | 九九热在线免费视频 | www.欧美.com | 一级黄色片免费在线观看 | 亚洲免费精品 | 中文字幕二区 | 午夜影院在线观看免费 | 97人人超碰 | 国产蜜臀97一区二区三区 | 国产精品一区二区三区四区 | 日本免费在线观看视频 | 国产精品精品视频 | 日韩一区二区三区在线观看 | 亚洲精品无 | 99精品欧美一区二区蜜桃免费 | 精品一二区| 成人欧美一区二区三区在线播放 | 亚洲美女在线视频 | 久久久久久久久国产精品 | 国产精品区二区三区日本 |