📄 1100.lst
字号:
246 void halWait(INT16U timeout) {
247 1 do {
248 2 _nop_();
249 2 _nop_();
250 2 _nop_();
251 2 _nop_();
252 2 _nop_();
253 2 _nop_();
254 2 _nop_();
255 2 _nop_();
256 2 _nop_();
257 2 _nop_();
258 2 _nop_();
259 2 _nop_();
260 2 _nop_();
261 2 _nop_();
262 2 _nop_();
263 2 } while (--timeout);
264 1 }
265
266
267 void SpiInit(void)
268 {
269 1 CSN=0;
270 1 SCK=0;
271 1 CSN=1;
272 1 }
273
274 /*****************************************************************************************
275 //函数名:CpuInit()
276 //输入:无
277 //输出:无
278 //功能描述:SPI初始化程序
279 /*****************************************************************************************/
280 void CpuInit(void)
281 {
282 1 SpiInit();
283 1 delay(5000);
284 1 }
285
286
287 //*****************************************************************************************
288 //函数名:SpisendByte(INT8U dat)
289 //输入:发送的数据
290 //输出:无
291 //功能描述:SPI发送一个字节
292 //*****************************************************************************************
293 INT8U SpiTxRxByte(INT8U dat)
294 {
295 1 INT8U i,temp;
296 1 temp = 0;
297 1
298 1 SCK = 0;
299 1 for(i=0; i<8; i++)
300 1 {
301 2 if(dat & 0x80)
C51 COMPILER V7.06 1100 12/19/2007 21:21:42 PAGE 6
302 2 {
303 3 MOSI = 1;
304 3 }
305 2 else MOSI = 0;
306 2 dat <<= 1;
307 2
308 2 SCK = 1;
309 2 _nop_();
310 2 _nop_();
311 2
312 2 temp <<= 1;
313 2 if(MISO)temp++;
314 2 SCK = 0;
315 2 _nop_();
316 2 _nop_();
317 2 }
318 1 return temp;
319 1 }
320
321 //*****************************************************************************************
322 //函数名:void RESET_CC1100(void)
323 //输入:无
324 //输出:无
325 //功能描述:复位CC1100
326 //*****************************************************************************************
327 void RESET_CC1100(void)
328 {
329 1 CSN = 0;
330 1 while (MISO);
331 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
332 1 while (MISO);
333 1 CSN = 1;
334 1 }
335
336 //*****************************************************************************************
337 //函数名:void POWER_UP_RESET_CC1100(void)
338 //输入:无
339 //输出:无
340 //功能描述:上电复位CC1100
341 //*****************************************************************************************
342 void POWER_UP_RESET_CC1100(void)
343 {
344 1 CSN = 1;
345 1 halWait(1);
346 1 CSN = 0;
347 1 halWait(1);
348 1 CSN = 1;
349 1 halWait(41);
350 1 RESET_CC1100(); //复位CC1100
351 1 }
352
353 //*****************************************************************************************
354 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
355 //输入:地址和配置字
356 //输出:无
357 //功能描述:SPI写寄存器
358 //*****************************************************************************************
359 void halSpiWriteReg(INT8U addr, INT8U value)
360 {
361 1 CSN = 0;
362 1 while (MISO);
363 1 SpiTxRxByte(addr); //写地址
C51 COMPILER V7.06 1100 12/19/2007 21:21:42 PAGE 7
364 1 SpiTxRxByte(value); //写入配置
365 1 CSN = 1;
366 1 }
367
368 //*****************************************************************************************
369 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
370 //输入:地址,写入缓冲区,写入个数
371 //输出:无
372 //功能描述:SPI连续写配置寄存器
373 //*****************************************************************************************
374 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
375 {
376 1 INT8U i, temp;
377 1 temp = addr | WRITE_BURST;
378 1 CSN = 0;
379 1 while (MISO);
380 1 SpiTxRxByte(temp);
381 1 for (i = 0; i < count; i++)
382 1 {
383 2 SpiTxRxByte(buffer[i]);
384 2 }
385 1 CSN = 1;
386 1 }
387
388 //*****************************************************************************************
389 //函数名:void halSpiStrobe(INT8U strobe)
390 //输入:命令
391 //输出:无
392 //功能描述:SPI写命令
393 //*****************************************************************************************
394 void halSpiStrobe(INT8U strobe)
395 {
396 1 CSN = 0;
397 1 while (MISO);
398 1 SpiTxRxByte(strobe); //写入命令
399 1 CSN = 1;
400 1 }
401
402
403
404
405
406 //*****************************************************************************************
407 //函数名:INT8U halSpiReadReg(INT8U addr)
408 //输入:地址
409 //输出:该寄存器的配置字
410 //功能描述:SPI读寄存器
411 //*****************************************************************************************
412 INT8U halSpiReadReg(INT8U addr)
413 {
414 1 INT8U temp, value;
415 1 temp = addr|READ_SINGLE;//读寄存器命令
416 1 CSN = 0;
417 1 while (MISO);
418 1 SpiTxRxByte(temp);
419 1 value = SpiTxRxByte(0);
420 1 CSN = 1;
421 1 return value;
422 1 }
423
424
425 //*****************************************************************************************
C51 COMPILER V7.06 1100 12/19/2007 21:21:42 PAGE 8
426 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
427 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
428 //输出:无
429 //功能描述:SPI连续写配置寄存器
430 //*****************************************************************************************
431 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
432 {
433 1 INT8U i,temp;
434 1 temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
435 1 CSN = 0;
436 1 while (MISO);
437 1 SpiTxRxByte(temp);
438 1 for (i = 0; i < count; i++)
439 1 {
440 2 buffer[i] = SpiTxRxByte(0);
441 2 }
442 1 CSN = 1;
443 1 }
444
445
446 //*****************************************************************************************
447 //函数名:INT8U halSpiReadReg(INT8U addr)
448 //输入:地址
449 //输出:该状态寄存器当前值
450 //功能描述:SPI读状态寄存器
451 //*****************************************************************************************
452 INT8U halSpiReadStatus(INT8U addr)
453 {
454 1 INT8U value,temp;
455 1 temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令
456 1 CSN = 0;
457 1 while (MISO);
458 1 SpiTxRxByte(temp);
459 1 value = SpiTxRxByte(0);
460 1 CSN = 1;
461 1 return value;
462 1 }
463 //*****************************************************************************************
464 //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
465 //输入:无
466 //输出:无
467 //功能描述:配置CC1100的寄存器
468 //*****************************************************************************************
469 void halRfWriteRfSettings(void)
470 {
471 1
472 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);//自已加的
473 1 // Write register settings
474 1 halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);
475 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0);
476 1 halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2);
477 1 halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1);
478 1 halSpiWriteReg(CCxxx0_FREQ0, rfSettings.FREQ0);
479 1 halSpiWriteReg(CCxxx0_MDMCFG4, rfSettings.MDMCFG4);
480 1 halSpiWriteReg(CCxxx0_MDMCFG3, rfSettings.MDMCFG3);
481 1 halSpiWriteReg(CCxxx0_MDMCFG2, rfSettings.MDMCFG2);
482 1 halSpiWriteReg(CCxxx0_MDMCFG1, rfSettings.MDMCFG1);
483 1 halSpiWriteReg(CCxxx0_MDMCFG0, rfSettings.MDMCFG0);
484 1 halSpiWriteReg(CCxxx0_CHANNR, rfSettings.CHANNR);
485 1 halSpiWriteReg(CCxxx0_DEVIATN, rfSettings.DEVIATN);
486 1 halSpiWriteReg(CCxxx0_FREND1, rfSettings.FREND1);
487 1 halSpiWriteReg(CCxxx0_FREND0, rfSettings.FREND0);
C51 COMPILER V7.06 1100 12/19/2007 21:21:42 PAGE 9
488 1 halSpiWriteReg(CCxxx0_MCSM0 , rfSettings.MCSM0 );
489 1 halSpiWriteReg(CCxxx0_FOCCFG, rfSettings.FOCCFG);
490 1 halSpiWriteReg(CCxxx0_BSCFG, rfSettings.BSCFG);
491 1 halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
492 1 halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
493 1 halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
494 1 halSpiWriteReg(CCxxx0_FSCAL3, rfSettings.FSCAL3);
495 1 halSpiWriteReg(CCxxx0_FSCAL2, rfSettings.FSCAL2);
496 1 halSpiWriteReg(CCxxx0_FSCAL1, rfSettings.FSCAL1);
497 1 halSpiWriteReg(CCxxx0_FSCAL0, rfSettings.FSCAL0);
498 1 halSpiWriteReg(CCxxx0_FSTEST, rfSettings.FSTEST);
499 1 halSpiWriteReg(CCxxx0_TEST2, rfSettings.TEST2);
500 1 halSpiWriteReg(CCxxx0_TEST1, rfSettings.TEST1);
501 1 halSpiWriteReg(CCxxx0_TEST0, rfSettings.TEST0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -