📄 1100.lst
字号:
227 1 unsigned int i;
228 1 for(i=0; i<s; i++);
229 1 for(i=0; i<s; i++);
230 1 }
231
232
233 void halWait(INT16U timeout) {
234 1 do {
235 2 _nop_();
236 2 _nop_();
237 2 _nop_();
238 2 _nop_();
239 2 _nop_();
C51 COMPILER V7.06 1100 10/28/2008 22:55:12 PAGE 5
240 2 _nop_();
241 2 _nop_();
242 2 _nop_();
243 2 _nop_();
244 2 _nop_();
245 2 _nop_();
246 2 _nop_();
247 2 _nop_();
248 2 _nop_();
249 2 _nop_();
250 2 } while (--timeout);
251 1 }
252
253
254 void SpiInit(void)
255 {
256 1 CSN=0;
257 1 SCK=0;
258 1 CSN=1;
259 1 }
260
261 /*****************************************************************************************
262 //函数名:CpuInit()
263 //输入:无
264 //输出:无
265 //功能描述:SPI初始化程序
266 /*****************************************************************************************/
267 void CpuInit(void)
268 {
269 1 SpiInit();
270 1 delay(5000);
271 1 }
272
273
274 //*****************************************************************************************
275 //函数名:SpisendByte(INT8U dat)
276 //输入:发送的数据
277 //输出:无
278 //功能描述:SPI发送一个字节
279 //*****************************************************************************************
280 INT8U SpiTxRxByte(INT8U dat)
281 {
282 1 INT8U i,temp;
283 1 temp = 0;
284 1
285 1 SCK = 0;
286 1 for(i=0; i<8; i++)
287 1 {
288 2 if(dat & 0x80)
289 2 {
290 3 MOSI = 1;
291 3 }
292 2 else MOSI = 0;
293 2 dat <<= 1;
294 2
295 2 SCK = 1;
296 2 _nop_();
297 2 _nop_();
298 2
299 2 temp <<= 1;
300 2 if(MISO)temp++;
301 2 SCK = 0;
C51 COMPILER V7.06 1100 10/28/2008 22:55:12 PAGE 6
302 2 _nop_();
303 2 _nop_();
304 2 }
305 1 return temp;
306 1 }
307
308 //*****************************************************************************************
309 //函数名:void RESET_CC1100(void)
310 //输入:无
311 //输出:无
312 //功能描述:复位CC1100
313 //*****************************************************************************************
314 void RESET_CC1100(void)
315 {
316 1 CSN = 0;
317 1 while (MISO);
318 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
319 1 while (MISO);
320 1 CSN = 1;
321 1 }
322
323 //*****************************************************************************************
324 //函数名:void POWER_UP_RESET_CC1100(void)
325 //输入:无
326 //输出:无
327 //功能描述:上电复位CC1100
328 //*****************************************************************************************
329 void POWER_UP_RESET_CC1100(void)
330 {
331 1 CSN = 1;
332 1 halWait(1);
333 1 CSN = 0;
334 1 halWait(1);
335 1 CSN = 1;
336 1 halWait(41);
337 1 RESET_CC1100(); //复位CC1100
338 1 }
339
340 //*****************************************************************************************
341 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
342 //输入:地址和配置字
343 //输出:无
344 //功能描述:SPI写寄存器
345 //*****************************************************************************************
346 void halSpiWriteReg(INT8U addr, INT8U value)
347 {
348 1 CSN = 0;
349 1 while (MISO);
350 1 SpiTxRxByte(addr); //写地址
351 1 SpiTxRxByte(value); //写入配置
352 1 CSN = 1;
353 1 }
354
355 //*****************************************************************************************
356 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
357 //输入:地址,写入缓冲区,写入个数
358 //输出:无
359 //功能描述:SPI连续写配置寄存器
360 //*****************************************************************************************
361 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
362 {
363 1 INT8U i, temp;
C51 COMPILER V7.06 1100 10/28/2008 22:55:12 PAGE 7
364 1 temp = addr | WRITE_BURST;
365 1 CSN = 0;
366 1 while (MISO);
367 1 SpiTxRxByte(temp);
368 1 for (i = 0; i < count; i++)
369 1 {
370 2 SpiTxRxByte(buffer[i]);
371 2 }
372 1 CSN = 1;
373 1 }
374
375 //*****************************************************************************************
376 //函数名:void halSpiStrobe(INT8U strobe)
377 //输入:命令
378 //输出:无
379 //功能描述:SPI写命令
380 //*****************************************************************************************
381 void halSpiStrobe(INT8U strobe)
382 {
383 1 CSN = 0;
384 1 while (MISO);
385 1 SpiTxRxByte(strobe); //写入命令
386 1 CSN = 1;
387 1 }
388
389
390
391
392
393 //*****************************************************************************************
394 //函数名:INT8U halSpiReadReg(INT8U addr)
395 //输入:地址
396 //输出:该寄存器的配置字
397 //功能描述:SPI读寄存器
398 //*****************************************************************************************
399 INT8U halSpiReadReg(INT8U addr)
400 {
401 1 INT8U temp, value;
402 1 temp = addr|READ_SINGLE;//读寄存器命令
403 1 CSN = 0;
404 1 while (MISO);
405 1 SpiTxRxByte(temp);
406 1 value = SpiTxRxByte(0);
407 1 CSN = 1;
408 1 return value;
409 1 }
410
411
412 //*****************************************************************************************
413 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
414 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
415 //输出:无
416 //功能描述:SPI连续写配置寄存器
417 //*****************************************************************************************
418 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
419 {
420 1 INT8U i,temp;
421 1 temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
422 1 CSN = 0;
423 1 while (MISO);
424 1 SpiTxRxByte(temp);
425 1 for (i = 0; i < count; i++)
C51 COMPILER V7.06 1100 10/28/2008 22:55:12 PAGE 8
426 1 {
427 2 buffer[i] = SpiTxRxByte(0);
428 2 }
429 1 CSN = 1;
430 1 }
431
432
433 //*****************************************************************************************
434 //函数名:INT8U halSpiReadReg(INT8U addr)
435 //输入:地址
436 //输出:该状态寄存器当前值
437 //功能描述:SPI读状态寄存器
438 //*****************************************************************************************
439 INT8U halSpiReadStatus(INT8U addr)
440 {
441 1 INT8U value,temp;
442 1 temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令
443 1 CSN = 0;
444 1 while (MISO);
445 1 SpiTxRxByte(temp);
446 1 value = SpiTxRxByte(0);
447 1 CSN = 1;
448 1 return value;
449 1 }
450 //*****************************************************************************************
451 //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
452 //输入:无
453 //输出:无
454 //功能描述:配置CC1100的寄存器
455 //*****************************************************************************************
456 void halRfWriteRfSettings(void)
457 {
458 1
459 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);//自已加的
460 1 // Write register settings
461 1 halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -