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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2036|回復: 1
打印 上一主題 下一主題
收起左側

MSP430F5438單片機控制LT8920射頻模塊問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:669348 發表于 2019-12-21 10:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
公司舊項目供應商使用MSP430F5438控制LT8920射頻模塊做遙控通訊,因原供應商主程序問題,目前轉為自己開發程序,供應商不提供原始代碼。目前在配置LT8920時無法初始化,請各位大佬看看,這個LT8920模塊要怎樣驅動起來

單片機源程序如下:
pin腳配置
  1. P1DIR |= BIT0 ;                                                        //IR -> RST
  2.   P1OUT &= ~BIT0 ;                                                        //DEFAULT SET LOW
  3.   P5DIR |= BIT0 ;                                                        //CS -> SPI_CLK
  4.   P5OUT &= ~BIT0 ;                                                        //DEFAULT SET LOW
  5.   P6DIR |= BIT7 ;                                                        //SC -> SPI_SS
  6.   P6OUT |= BIT7 ;                                                        //DEFAULT SET HIGH   
  7.   P7DIR |= BIT4 ;                                                        //MO -> MOSI
  8.   P7OUT &= ~BIT4 ;                                                        //DEFAULT SET LOW     
  9.   P7DIR &= ~(BIT5 + BIT6) ;                                        //MI -> MISO
  10.                                                                                         //CE -> PKT
復制代碼
宏定義
  1. #define RST(x)                        (x)? (P1OUT |= BIT0) : (P1OUT &= ~BIT0)
  2. #define SPI_SS(x)                (x)? (P6OUT |= BIT7) : (P6OUT &= ~BIT7)
  3. #define SPI_CLK(x)                (x)? (P5OUT |= BIT0) : (P5OUT &= ~BIT0)
  4. #define MOSI(x)                        (x)? (P7OUT |= BIT4) : (P7OUT &= ~BIT4)
  5. #define MISO                        (P7IN & BIT5)
  6. #define PKT                                (P7IN & BIT6)
復制代碼
寫寄存器
  1. void SPI_WriteReg(unsigned char addr, unsigned char H, unsigned char L)
  2. {
  3.         int i;
  4.         SPI_SS(OFF);
  5.         delay_us(5);

  6.         for(i = 0; i < 8; ++ i)
  7.         {
  8.                 MOSI((addr & 0x80));
  9.                 delay_us(5);
  10.                 SPI_CLK(ON);
  11.                 delay_us(5);
  12.                 SPI_CLK(OFF);                                                //capturing at the down side
  13.                 delay_us(5);
  14.                 addr = addr << 1;                   //There is no Delay here. determines the rate of SPI.
  15.         }

  16.         for(i = 0; i < 8; ++i)                         //Write H
  17.         {
  18.                 MOSI((H & 0x80));
  19.                 delay_us(5);
  20.                 SPI_CLK(ON);
  21.                 delay_us(5);
  22.                 SPI_CLK(OFF);                                                //capturing at the down side
  23.                 delay_us(5);
  24.                 H = H << 1;
  25.         }

  26.         for(i = 0; i < 8; ++i)                 //Write L
  27.         {  
  28.                 MOSI((L & 0x80));
  29.                 delay_us(5);
  30.                 SPI_CLK(ON);
  31.                 delay_us(5);
  32.                 SPI_CLK(OFF);                                                //capturing at the down side
  33.                 delay_us(5);
  34.                 L = L << 1;
  35.         }
  36.         SPI_SS(ON);
  37.         delay_us(5);
  38. }
復制代碼

讀寄存器
  1. void SPI_ReadReg(unsigned char addr)
  2. {
  3.         int i;
  4.         SPI_SS(OFF);
  5.         delay_us(5);
  6.         //addr += 0x80;                                    //when reading a Register,the Address should be added with 0x80.
  7.         addr |= 0x80;                                                        //bit7 1:read,0:write

  8.         for(i = 0; i < 8; ++ i)
  9.         {
  10.                 MOSI((addr & 0x80));
  11.                 delay_us(5);
  12.                 SPI_CLK(ON);
  13.                 delay_us(5);
  14.                 SPI_CLK(OFF);                                                //capturing at the down side
  15.                 delay_us(5);
  16.                 addr = addr << 1;                   //Move one bit to the left.
  17.         }

  18.         for(i = 0; i < 8; ++ i)
  19.         {
  20.                 SPI_CLK(ON);
  21.                 delay_us(5);
  22.                 SPI_CLK(OFF);                                                //capturing at the down side
  23.                 delay_us(5);
  24.                
  25.                 RegH = RegH << 1;  
  26.                 RegH |= MISO;
  27.         }
  28.         
  29.         for(i = 0; i < 8; ++ i)
  30.         {
  31.                 SPI_CLK(ON);
  32.                 delay_us(5);
  33.                 SPI_CLK(OFF);                                                //capturing at the down side
  34.                 delay_us(5);

  35.                 RegL = RegL << 1;
  36.                 RegL |= MISO;
  37.         }
  38.         SPI_SS(ON);
  39.         delay_us(5);
  40. }
復制代碼

LT8920初始化
  1. void LT8900_Init(void)
  2. {
  3.         RST(OFF);
  4.         delay_ms(4);                                                                        //delay 4ms
  5.         RST(ON);
  6.         delay_ms(8);                                                                        //delay 8ms for 晶振穩定
  7.         
  8.         SPI_WriteReg( 0, 0x6f, 0xef );                                        //default
  9.         SPI_WriteReg( 1, 0x56, 0x81 );                                        //default
  10.         SPI_WriteReg( 2, 0x66, 0x17 );                                        //default 6619/6617
  11.         SPI_WriteReg( 4, 0x9c, 0xc9 );                                        //default 5447/9cc9
  12.         SPI_WriteReg( 5, 0x66, 0x37 );                                        //default f000/6637
  13.         SPI_WriteReg( 7, 0x00, 0x00 );                                        //channel is 2402Mhz
  14.         SPI_WriteReg( 8, 0x6c, 0x90 );                                        //default 71af/6c90
  15.         SPI_WriteReg( 9, 0x48, 0x00 );                                          //PA -12.2dbm
  16.         SPI_WriteReg(10, 0x7f, 0xfd );                                        //Crystal osc. enable
  17.         SPI_WriteReg(11, 0x00, 0x08 );                                        //RSSI enabled
  18.         SPI_WriteReg(12, 0x00, 0x00 );                                        //default
  19.         SPI_WriteReg(13, 0x48, 0xbd );                                        //default
  20.         SPI_WriteReg(22, 0x00, 0xff );                                        //default
  21.         SPI_WriteReg(23, 0x80, 0x05 );                                        //Calibrate VCO before each and every Tx/Rx.
  22.         SPI_WriteReg(24, 0x00, 0x67 );                                        //default
  23.         SPI_WriteReg(25, 0x16, 0x59 );                                        //default
  24.         SPI_WriteReg(26, 0x19, 0xe0 );                                        //default
  25.         SPI_WriteReg(27, 0x13, 0x00 );
  26.         SPI_WriteReg(28, 0x18, 0x00 );                                        //default
  27.         SPI_WriteReg(32, 0x48, 0x00 );                                        //8920在62.5kbps下同步頭只能是32或16bit
  28.         SPI_WriteReg(33, 0x3f, 0xc7 );                                        //Configures packet sequencing
  29.         SPI_WriteReg(34, 0x20, 0x00 );                                        //Configures packet sequencing
  30.         SPI_WriteReg(35, 0x05, 0x00 );                                    //Auto Ack max Tx retries = 4

  31.         SPI_WriteReg(36, 0x03, 0x80 );                                        //sync word
  32.         SPI_WriteReg(37, 0x03, 0x80 );                                        //sync word
  33.         SPI_WriteReg(38, 0x5a, 0x5a );                                        //sync word
  34.         SPI_WriteReg(39, 0x03, 0x80 );                                        //sync word

  35.         SPI_WriteReg(40, 0x44, 0x02 );                                        //Configure FIFO flag, sync threshold, 1bit可錯
  36.         SPI_WriteReg(41, 0xb8, 0x00 );                        /*CRC is ON; scramble is OFF; AUTO_ACK is ON*/
  37.         
  38.         SPI_WriteReg(42, 0xfd, 0xb0 );                                        /*等待RX_ACK時間 176us*/
  39.         
  40.         SPI_WriteReg(43, 0x00, 0x0f );
  41.         SPI_WriteReg(44, 0x10, 0x00 );                                       
  42.         SPI_WriteReg(45, 0x05, 0x52 );                                        //62.5Kbps
  43.         SPI_WriteReg(50, 0x00, 0x00 );
  44.         delay_ms(100);
  45. }
復制代碼

主程序初始化后再讀寄存器,無法正確讀取,無法確認是初始化不成功還是讀取不成功
  1.         LT8900_Init( );

  2.         //讀出寄存器的值檢查硬件讀寫時序是否正確
  3.         SPI_ReadReg(40);
  4.         if ((RegH==0x44) && (RegL==0x02))
  5.         {
  6.                 //NIGHTLIGHT(ON);
  7.                 LED_P(ON);
  8.                 //Delay_ms(200);
  9.                 //__delay_cycles(160000);
  10.                 //NIGHTLIGHT(OFF);
  11.                 Uart0_Send(Welcome,12);
  12.         }
  13.         else
  14.                 //LED_P(ON);
  15.                 NIGHTLIGHT(ON);
復制代碼





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

使用道具 舉報

沙發
ID:669348 發表于 2019-12-24 11:37 | 只看該作者
已解決了,MSP430pin腳讀取后續進行移位才能進行位操作
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91在线 | 欧美色性| 国产精品美女久久久久久免费 | 在线中文视频 | 自拍偷拍第一页 | 午夜精品久久久久久久99黑人 | 在线免费观看黄a | 欧美专区在线 | 亚洲精品中文字幕在线 | 人人干人人干人人 | 亚洲高清在线观看 | 亚洲综合成人网 | 久久久久国产精品 | 亚洲国产一区二区三区 | 国产精品国产精品国产专区不卡 | 日韩精品一区二区三区在线观看 | 国产91久久久久久 | 亚欧洲精品在线视频免费观看 | 日本在线中文 | 国产福利在线免费观看 | 一区二区三区四区电影视频在线观看 | 91动漫在线观看 | 久久国产精品久久久久久 | 福利一区在线观看 | 日韩欧美国产一区二区三区 | 欧美成人精品一区二区男人看 | 密乳av| 极品销魂美女一区二区 | 91 久久| 日本成人免费网站 | 日韩在线免费电影 | 亚洲一区有码 | 欧美性久久 | 日本成人中文字幕在线观看 | 视频一区在线 | 亚洲久草 | 国产精品视频久久 | 久久久亚洲精品视频 | 久久久久久久电影 | 久色网 | 欧美日韩a |