📄 main.lst
字号:
216 2 }
217 1 }
218
219 //*****************************************************************************************
220 //函数名:SpisendByte(INT8U dat)
221 //输入:发送的数据
222 //输出:无
223 //功能描述:SPI发送一个字节
224 //*****************************************************************************************
225 INT8U SpiTxRxByte(INT8U dat)
226 {
227 1 INT8U i,temp;
228 1 temp = 0;
229 1
230 1 SCK = 0;
231 1 for(i=0; i<8; i++)
232 1 {
233 2 if(dat & 0x80)
234 2 {
235 3 MOSI = 1;
236 3 }
237 2 else MOSI = 0;
238 2 dat <<= 1;
239 2
C51 COMPILER V7.50 MAIN 11/26/2006 22:02:37 PAGE 5
240 2 SCK = 1;
241 2 _nop_();
242 2 _nop_();
243 2
244 2 temp <<= 1;
245 2 if(MISO)temp++;
246 2 SCK = 0;
247 2 _nop_();
248 2 _nop_();
249 2 }
250 1 return temp;
251 1 }
252
253 //*****************************************************************************************
254 //函数名:void RESET_CC1100(void)
255 //输入:无
256 //输出:无
257 //功能描述:复位CC1100
258 //*****************************************************************************************
259 void RESET_CC1100(void)
260 {
261 1 CSN = 0;
262 1 while (GDO1);
263 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
264 1 while (GDO1);
265 1 CSN = 1;
266 1 }
267
268 //*****************************************************************************************
269 //函数名:void POWER_UP_RESET_CC1100(void)
270 //输入:无
271 //输出:无
272 //功能描述:上电复位CC1100
273 //*****************************************************************************************
274 void POWER_UP_RESET_CC1100(void)
275 {
276 1 CSN = 1;
277 1 halWait(1);
278 1 CSN = 0;
279 1 halWait(1);
280 1 CSN = 1;
281 1 halWait(41);
282 1 RESET_CC1100(); //复位CC1100
283 1 }
284
285 //*****************************************************************************************
286 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
287 //输入:地址和配置字
288 //输出:无
289 //功能描述:SPI写寄存器
290 //*****************************************************************************************
291 void halSpiWriteReg(INT8U addr, INT8U value)
292 {
293 1 CSN = 0;
294 1 while (GDO1);
295 1 SpiTxRxByte(addr); //写地址
296 1 SpiTxRxByte(value); //写入配置
297 1 CSN = 1;
298 1 }
299
300 //*****************************************************************************************
301 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
C51 COMPILER V7.50 MAIN 11/26/2006 22:02:37 PAGE 6
302 //输入:地址,写入缓冲区,写入个数
303 //输出:无
304 //功能描述:SPI连续写配置寄存器
305 //*****************************************************************************************
306 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
307 {
308 1 INT8U i, temp;
309 1 temp = addr | WRITE_BURST;
310 1 CSN = 0;
311 1 while (GDO1);
312 1 SpiTxRxByte(temp);
313 1 for (i = 0; i < count; i++)
314 1 {
315 2 SpiTxRxByte(buffer[i]);
316 2 }
317 1 CSN = 1;
318 1 }
319
320 //*****************************************************************************************
321 //函数名:void halSpiStrobe(INT8U strobe)
322 //输入:命令
323 //输出:无
324 //功能描述:SPI写命令
325 //*****************************************************************************************
326 void halSpiStrobe(INT8U strobe)
327 {
328 1 CSN = 0;
329 1 while (GDO1);
330 1 SpiTxRxByte(strobe); //写入命令
331 1 CSN = 1;
332 1 }
333
334
335
336
337
338 //*****************************************************************************************
339 //函数名:INT8U halSpiReadReg(INT8U addr)
340 //输入:地址
341 //输出:该寄存器的配置字
342 //功能描述:SPI读寄存器
343 //*****************************************************************************************
344 INT8U halSpiReadReg(INT8U addr)
345 {
346 1 INT8U temp, value;
347 1 temp = addr|READ_SINGLE;//读寄存器命令
348 1 CSN = 0;
349 1 while (GDO1);
350 1 SpiTxRxByte(temp);
351 1 value = SpiTxRxByte(0);
352 1 CSN = 1;
353 1 return value;
354 1 }
355
356
357 //*****************************************************************************************
358 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
359 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
360 //输出:无
361 //功能描述:SPI连续写配置寄存器
362 //*****************************************************************************************
363 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
C51 COMPILER V7.50 MAIN 11/26/2006 22:02:37 PAGE 7
364 {
365 1 INT8U i,temp;
366 1 temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
367 1 CSN = 0;
368 1 while (GDO1);
369 1 SpiTxRxByte(temp);
370 1 for (i = 0; i < count; i++)
371 1 {
372 2 buffer[i] = SpiTxRxByte(0);
373 2 }
374 1 CSN = 1;
375 1 }
376
377
378 //*****************************************************************************************
379 //函数名:INT8U halSpiReadReg(INT8U addr)
380 //输入:地址
381 //输出:该状态寄存器当前值
382 //功能描述:SPI读状态寄存器
383 //*****************************************************************************************
384 INT8U halSpiReadStatus(INT8U addr)
385 {
386 1 INT8U value,temp;
387 1 temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令
388 1 CSN = 0;
389 1 while (GDO1);
390 1 SpiTxRxByte(temp);
391 1 value = SpiTxRxByte(0);
392 1 CSN = 1;
393 1 return value;
394 1 }
395
396
397 //*****************************************************************************************
398 //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
399 //输入:无
400 //输出:无
401 //功能描述:配置CC1100的寄存器
402 //*****************************************************************************************
403 void halRfWriteRfSettings(void)
404 {
405 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);//自已加的
406 1 // Write register settings
407 1 halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);
408 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0);
409 1 halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2);
410 1 halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1);
411 1 halSpiWriteReg(CCxxx0_FREQ0, rfSettings.FREQ0);
412 1 halSpiWriteReg(CCxxx0_MDMCFG4, rfSettings.MDMCFG4);
413 1 halSpiWriteReg(CCxxx0_MDMCFG3, rfSettings.MDMCFG3);
414 1 halSpiWriteReg(CCxxx0_MDMCFG2, rfSettings.MDMCFG2);
415 1 halSpiWriteReg(CCxxx0_MDMCFG1, rfSettings.MDMCFG1);
416 1 halSpiWriteReg(CCxxx0_MDMCFG0, rfSettings.MDMCFG0);
417 1 halSpiWriteReg(CCxxx0_CHANNR, rfSettings.CHANNR);
418 1 halSpiWriteReg(CCxxx0_DEVIATN, rfSettings.DEVIATN);
419 1 halSpiWriteReg(CCxxx0_FREND1, rfSettings.FREND1);
420 1 halSpiWriteReg(CCxxx0_FREND0, rfSettings.FREND0);
421 1 halSpiWriteReg(CCxxx0_MCSM0 , rfSettings.MCSM0 );
422 1 halSpiWriteReg(CCxxx0_FOCCFG, rfSettings.FOCCFG);
423 1 halSpiWriteReg(CCxxx0_BSCFG, rfSettings.BSCFG);
424 1 halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
425 1 halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
C51 COMPILER V7.50 MAIN 11/26/2006 22:02:37 PAGE 8
426 1 halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
427 1 halSpiWriteReg(CCxxx0_FSCAL3, rfSettings.FSCAL3);
428 1 halSpiWriteReg(CCxxx0_FSCAL2, rfSettings.FSCAL2);
429 1 halSpiWriteReg(CCxxx0_FSCAL1, rfSettings.FSCAL1);
430 1 halSpiWriteReg(CCxxx0_FSCAL0, rfSettings.FSCAL0);
431 1 halSpiWriteReg(CCxxx0_FSTEST, rfSettings.FSTEST);
432 1 halSpiWriteReg(CCxxx0_TEST2, rfSettings.TEST2);
433 1 halSpiWriteReg(CCxxx0_TEST1, rfSettings.TEST1);
434 1 halSpiWriteReg(CCxxx0_TEST0, rfSettings.TEST0);
435 1 halSpiWriteReg(CCxxx0_IOCFG2, rfSettings.IOCFG2);
436 1 halSpiWriteReg(CCxxx0_IOCFG0, rfSettings.IOCFG0);
437 1 halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
438 1 halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
439 1 halSpiWriteReg(CCxxx0_ADDR, rfSettings.ADDR);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -