欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STM8單片機(jī)+SI4432收發(fā)失敗問題求助,寄存器配置無誤
[打印本頁]
作者:
懶惰想了
時(shí)間:
2018-10-29 17:20
標(biāo)題:
STM8單片機(jī)+SI4432收發(fā)失敗問題求助,寄存器配置無誤
如題求助,參考了很多源代碼自己寫了一點(diǎn)
基本的讀寫寄存器已經(jīng)做到了,測試無錯(cuò)誤,
發(fā)射方面用的是STM8S單片機(jī)+SI4432,SPI通信,PH+FIFO+GFSK
發(fā)射頻率: 435.355Mhz
晶振設(shè)置: 12ppm
晶體速率: 30Mhz
頻率偏移: 無
頻率偏差: 10khz
AFC: 開啟
數(shù)據(jù)傳輸率: 1.2kbps
接收方面用的是WD21 無線模塊,使用軟件設(shè)置接收頻率
接收頻率: 435.355Mhz
模塊波特率: 9600bps
空中波特率: 9600bps
雖然讀寫寄存器成功(用Silicons Labs提供的xls文件計(jì)算value),但是發(fā)射信號(hào)后無線模塊卻什么也接收不到。MCU方面有試過其他程序,可以確定MCU初始化沒問題。
單片機(jī)源碼:
void SI4432_INIT(void)
{
SPI_Read(0x03);
SPI_Read(0x04);
lcd_write_text("start", 10,0,0);
phyWrite(0x07, 0x80); //reset register values to default
SPI_Read(0x03);
SPI_Read(0x04);
SPI_Read(0x03);
SPI_Read(0x04);
//////////////////435.355MHZ 設(shè)定///////////////////////////////////////////////////////////////////////
phyWrite(0x75, 0x53); // set frequency band
phyWrite(0x76, 0x85); // set nominal carrier frequency 1
phyWrite(0x77, 0xe0); // set nominal carrier frequency 0
//////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////1.2kbps 設(shè)定//////////////////////////////////////////////////////////////////////
phyWrite(0x6e, 0x0a); //tx data rate
phyWrite(0x6f, 0x3d); // tx data rate
///////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////頻率偏差/////////////////////////////////////////////////////////////////////
phyWrite(0x70, 0x0C); // manchester coding disabled
phyWrite(0x71, 0x23); // FIFO mode, GFSK modulated
phyWrite(0x72, 0x10); // tx deviation 10KHz
///////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////頻率偏移////////////////////////////////////////////////////////////////////
phyWrite(0x73, 0x00); //no frequency offset
phyWrite(0x74, 0x00); // no frequency offset
///////////////////////////////////////////////////////////////////////////////////////////////////////////
phyWrite(0x07, 0x01); // 進(jìn)入ready模式
phyWrite(0x09, 0x7f); // 晶振精度 12ppm
phyWrite(0x0b, 0xea); // SI4432 GPIO 0 (無視不使用)
phyWrite(0x0c, 0xea); // SI4432 GPIO 1 (無視不使用)
phyWrite(0x0d, 0xf4); // SI4432 GPIO 2 (無視不使用)
phyWrite(0x6d, 0x19); // tx power 18dbm
phyWrite(0x30, 0xac); // 使用PH+FIFO mode,CRC使能
phyWrite(0x32, 0x00); // byte0, header control
phyWrite(0x33, 0x02);// 使用同步字3,2
phyWrite(0x34, 0x0a); // 前導(dǎo)碼長度 5個(gè)字節(jié)
phyWrite(0x35, 0x52); // 前導(dǎo)碼偵測控制1(不太清楚怎么設(shè)置)
phyWrite(0x36, 0x2d); //同步字3 2D
phyWrite(0x37, 0xD4); //同步字2 D4
phyWrite(0x38, 0x00); //同步字1
phyWrite(0x39, 0x00); //同步字0
phyWrite(0x3a, 0x00); // transmit header 3
phyWrite(0x3b, 0x00); // transmit header 2
phyWrite(0x3c, 0x00); // transmit header 1
phyWrite(0x3d, 0x00); // transmit header 0
phyWrite(0x3f, 0x00); //check header 3
phyWrite(0x40, 0x00); //check header 2
phyWrite(0x41, 0x00); //check header 1
phyWrite(0x42, 0x00); //check header 0
phyWrite(0x43, 0xff); //header value 3
phyWrite(0x44, 0xff); //header value 2
phyWrite(0x45, 0xff); //header value 1
phyWrite(0x46, 0xff); //header value 0
/* 用途不明?
phyWrite(0x1c, 0x3D); //IF filter bandwidth
phyWrite(0x1d, 0x40); //AFC_LOOP_GEARSHIFT_OVERRIDE
phyWrite(0x1e, 0x0a); //AFC Timing Control
phyWrite(0x1f, 0x03); //Clock recovery gearshift override
phyWrite(0x2a, 0x20); //write 0x20 to the AFC Limiter register
phyWrite(0x20, 0xA1);
phyWrite(0x21, 0x20);
phyWrite(0x22, 0x4e);
phyWrite(0x23, 0xa5);
phyWrite(0x24, 0x00);
phyWrite(0x25, 0x0b);
delay(5);
*/
}
void txdata(void)
{
unsigned char txdata[9];
//unsigned char i;
//tx test data is use to test the sended out signal
lcd_write_text("start tx", 10,0,0);
for (y=0 ; y<8; y++)
{
txdata[y] = 0x30 + y ;
}
//Flag.is_tx = 1
//delay(100);
phyWrite(0x07, 0x01); // SI4432進(jìn)入準(zhǔn)備模式
delay(10);
phyWrite(0x08, 0x01); // 清空tx fifo
delay(10);
phyWrite(0x08, 0x00); // 清空tx fifo
delay(10);
//phyWrite(0x08, 0x02); // 使能自動(dòng)切傳輸與切換
//delay(10);
phyWrite(0x3e, 0x08); // 送出8個(gè)字節(jié) payload length, the number of bytes you are going to send
for (x = 0; x<8; x++)
{
phyWrite(0x7f, txdata[x]); // put the data intended to send out into loading area, fifo loading area
delay(10);
}
phyWrite(0x05, 0x04); // 發(fā)出packet sent interrupt
phyWrite(0x06, 0x00);// disable interrupt
phyWrite(0x07, 0x09); // 打包tx fifo里的字節(jié)然后發(fā)出 pack tx data and send
delay(10);
phyWrite(0x05, 0x03); // signal valid packed sent
phyWrite(0x06, 0x00);// disable interrupt
SPI_Read(0x03); //重置interrupt
SPI_Read(0x04); // 重置interrupt
//phyWrite(0x07, 0x05); //SI4432轉(zhuǎn)接收模式
//delay(1);
}
復(fù)制代碼
希望大神可以指點(diǎn)出錯(cuò)誤,感激不盡
作者:
gws12345678
時(shí)間:
2018-10-30 19:16
發(fā)送和接收用的不是同一個(gè)方案模塊? 不同方案之間互聯(lián)互通可能會(huì)有問題,需要咨詢供應(yīng)商,給予準(zhǔn)確答復(fù)噢
作者:
小李子鐵頭
時(shí)間:
2019-2-21 15:31
驗(yàn)證碼不對(duì),沒有辦法接收的
作者:
小李子鐵頭
時(shí)間:
2019-2-21 15:32
可以參考這個(gè)
http://www.raoushi.com/bbs/dpj-100768-1.html
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1