📄 1100.lst
字号:
196 0x1C, // BSCFG Bit synchronization Configuration.
197 0xC7, // AGCCTRL2 AGC control.
198 0x00, // AGCCTRL1 AGC control.
199 0xB2, // AGCCTRL0 AGC control.
200
201 0xEA, // FSCAL3 Frequency synthesizer calibration.
202 0x2A, // FSCAL2 Frequency synthesizer calibration.
203 0x00, // FSCAL1 Frequency synthesizer calibration.
204 0x11, // FSCAL0 Frequency synthesizer calibration.
205 0x59, // FSTEST Frequency synthesizer calibration.
206 0x81, // TEST2 Various test settings.
207 0x35, // TEST1 Various test settings.
208 0x09, // TEST0 Various test settings.
209 0x0B, // IOCFG2 GDO2 output pin configuration.
210 0x06, // IOCFG0D GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed p
-seudo register explanation.
211
212 0x04, // PKTCTRL1 Packet automation control.
213 0x05, // PKTCTRL0 Packet automation control.
214 0x00, // ADDR Device address.
215 0x0c // PKTLEN Packet length.
216 };
217 //*****************************************************************************************
218 //函数名:delay(unsigned int s)
219 //输入:时间
220 //输出:无
221 //功能描述:普通廷时,内部用
222 //*****************************************************************************************
223 static void delay(unsigned int s)
224 {
225 1 unsigned int i;
226 1 for(i=0; i<s; i++);
227 1 for(i=0; i<s; i++);
228 1 }
229
230
231 void halWait(INT16U timeout) {
232 1 do {
233 2 _nop_();
234 2 _nop_();
235 2 _nop_();
236 2 _nop_();
237 2 _nop_();
238 2 _nop_();
239 2 _nop_();
C51 COMPILER V7.06 1100 12/19/2007 21:10:32 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 } while (--timeout);
249 1 }
250
251
252 void SpiInit(void)
253 {
254 1 CSN=0;
255 1 SCK=0;
256 1 CSN=1;
257 1 }
258
259 /*****************************************************************************************
260 //函数名:CpuInit()
261 //输入:无
262 //输出:无
263 //功能描述:SPI初始化程序
264 /*****************************************************************************************/
265 void CpuInit(void)
266 {
267 1 SpiInit();
268 1 delay(5000);
269 1 }
270
271
272 //*****************************************************************************************
273 //函数名:SpisendByte(INT8U dat)
274 //输入:发送的数据
275 //输出:无
276 //功能描述:SPI发送一个字节
277 //*****************************************************************************************
278 INT8U SpiTxRxByte(INT8U dat)
279 {
280 1 INT8U i,temp;
281 1 temp = 0;
282 1
283 1 SCK = 0;
284 1 for(i=0; i<8; i++)
285 1 {
286 2 if(dat & 0x80)
287 2 {
288 3 MOSI = 1;
289 3 }
290 2 else MOSI = 0;
291 2 dat <<= 1;
292 2
293 2 SCK = 1;
294 2 _nop_();
295 2 _nop_();
296 2
297 2 temp <<= 1;
298 2 if(MISO)temp++;
299 2 SCK = 0;
300 2 _nop_();
301 2 _nop_();
C51 COMPILER V7.06 1100 12/19/2007 21:10:32 PAGE 6
302 2 }
303 1 return temp;
304 1 }
305
306 //*****************************************************************************************
307 //函数名:void RESET_CC1100(void)
308 //输入:无
309 //输出:无
310 //功能描述:复位CC1100
311 //*****************************************************************************************
312 void RESET_CC1100(void)
313 {
314 1 CSN = 0;
315 1 while (MISO);
316 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
317 1 while (MISO);
318 1 CSN = 1;
319 1 }
320
321 //*****************************************************************************************
322 //函数名:void POWER_UP_RESET_CC1100(void)
323 //输入:无
324 //输出:无
325 //功能描述:上电复位CC1100
326 //*****************************************************************************************
327 void POWER_UP_RESET_CC1100(void)
328 {
329 1 CSN = 1;
330 1 halWait(1);
331 1 CSN = 0;
332 1 halWait(1);
333 1 CSN = 1;
334 1 halWait(41);
335 1 RESET_CC1100(); //复位CC1100
336 1 }
337
338 //*****************************************************************************************
339 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
340 //输入:地址和配置字
341 //输出:无
342 //功能描述:SPI写寄存器
343 //*****************************************************************************************
344 void halSpiWriteReg(INT8U addr, INT8U value)
345 {
346 1 CSN = 0;
347 1 while (MISO);
348 1 SpiTxRxByte(addr); //写地址
349 1 SpiTxRxByte(value); //写入配置
350 1 CSN = 1;
351 1 }
352
353 //*****************************************************************************************
354 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
355 //输入:地址,写入缓冲区,写入个数
356 //输出:无
357 //功能描述:SPI连续写配置寄存器
358 //*****************************************************************************************
359 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
360 {
361 1 INT8U i, temp;
362 1 temp = addr | WRITE_BURST;
363 1 CSN = 0;
C51 COMPILER V7.06 1100 12/19/2007 21:10:32 PAGE 7
364 1 while (MISO);
365 1 SpiTxRxByte(temp);
366 1 for (i = 0; i < count; i++)
367 1 {
368 2 SpiTxRxByte(buffer[i]);
369 2 }
370 1 CSN = 1;
371 1 }
372
373 //*****************************************************************************************
374 //函数名:void halSpiStrobe(INT8U strobe)
375 //输入:命令
376 //输出:无
377 //功能描述:SPI写命令
378 //*****************************************************************************************
379 void halSpiStrobe(INT8U strobe)
380 {
381 1 CSN = 0;
382 1 while (MISO);
383 1 SpiTxRxByte(strobe); //写入命令
384 1 CSN = 1;
385 1 }
386
387
388
389
390
391 //*****************************************************************************************
392 //函数名:INT8U halSpiReadReg(INT8U addr)
393 //输入:地址
394 //输出:该寄存器的配置字
395 //功能描述:SPI读寄存器
396 //*****************************************************************************************
397 INT8U halSpiReadReg(INT8U addr)
398 {
399 1 INT8U temp, value;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -