首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

zigbee测试板硬件问题(更换主题

我将13192sard.c和13192sard.h里的代码更改以匹配自己的板子,然后target仍然指向13192sard,不知可不可行。另外还要更改些什么,还有smac里13132sard.c里面的都是些什么意思啊?
#include "drivers.h"
#include "13192SARD.h"

void RadioInit(void) {
SPIDrvWrite(0x11,0x80FF); /* Eliminate Unlock Conditions due to L01 */
SPIDrvWrite(0x1B,0x8000); /* Disable TC1. */
SPIDrvWrite(0x1D,0x8000); /* Disable TC2. */
SPIDrvWrite(0x1F,0x8000); /* Disable TC3. */
SPIDrvWrite(0x21,0x8000); /* Disable TC4. */
SPIDrvWrite(0x07,0x0E00); /* Enable CLKo in Doze */
SPIDrvWrite(0x0C,0x0300); /* IRQ pull-up disable. */
SPIDrvWrite(0x04,0xA08D); /* New cal value */
SPIDrvWrite(0x08,0xFFF7); /* Preferred injection */
SPIDrvWrite(0x05,0x8351); /* Acoma, TC1, Doze, ATTN masks, LO1, CRC */
SPIDrvWrite(0x06,0x4720); /* CCA, TX, RX, energy detect */
SPIDrvRead(0x25);

/* Advance the state variable to Idle */
gu8RTxMode = IDLE_MODE;
}
谢谢指教
将程序烧写进片子是通过BDM头,可以参考SARD的原理图。
如果你的MCU和13192之间的连线是和SARD一样的,就选择SARD的target,改动一下你对LED和按键的设置。
如果MCU和13192之间的连线和SARD不一样,那需要自己手动更改了,从底层改起。
你贴的这段程序是对13192进行初始化的操作,通过SPI口读写13192的寄存器
程序能烧进去,当然不能执行。

我把13192sard.h和13192sard.c改了,另外还要改那些文件?
mcu和13192连线一样的。
Define the SCI perameters
**************************************************************/
#define SCIBDH SCI1BDH
#define SCIBDL SCI1BDL
#define SCIC1 SCI1C1
#define SCIC2 SCI1C2
#define SCIS1 SCI1S1
#define SCIS2 SCI1S2
#define SCIC3 SCI1C3
#define SCID SCI1D

#define SCIS1_TDRE SCI1S1_TDRE
#define SCIS1_TC SCI1S1_TC

#define RTS PTAD_PTAD1
#define RTSDIR PTADD_PTADD1
#define SCI_DEFAULT_BAUD 38400
还有原来sard.h里的串口定义怎么只有rts,那么cts哪去了,还有别的串口线?


又发现个问题,自己用的是48pin的gt60,但是sard板是44pin的,有些地方得改动
#define PTCD_PTCD0_MASK 1
#define PTCD_PTCD0_BITNUM 0
#define PTCD_PTCD1_MASK 2
#define PTCD_PTCD1_BITNUM 1
#define PTCD_PTCD2_MASK 4
#define PTCD_PTCD2_BITNUM 2
#define PTCD_PTCD3_MASK 8
#define PTCD_PTCD3_BITNUM 3
#define PTCD_PTCD4_MASK 16
#define PTCD_PTCD4_BITNUM 4
#define PTCD_PTCD5_MASK 32
#define PTCD_PTCD5_BITNUM 5
#define PTCD_PTCD6_MASK 64
#define PTCD_PTCD6_BITNUM 6
#define PTCD_PTCD_MASK 127
#define PTCD_PTCD_BITNUM 0
这句我怎么加,把ptcd7加上,然后把最后得mask改成255?
MCU和13192连线是否一样,关键看对应的口,打个比方,你的PTB2和13192的GPIO1相连,那么SARD也是要PTB2和13192的GPIO1相连。这个和芯片封装没有关系,不受影响的,芯片封装只是引脚的顺序可能有些差异,比如这个PTB2在1脚,那个在2脚。

所以,你一定要确定你的连线和SARD之间的差异。sard.h如果硬件连线有差异就需要改动,而sard.c都是初始化的动作,对13192的寄存器读写,这个并不需要改动的。

串口cts没有定义你就自己定义一下。

PTCD7的定义可以仿照前面的6个定义,最后的mask是改成255
TPM1SC = 0x00; /* Return to reset values */

gu8RTxMode = SYSTEM_RESET_MODE;
GPIOInit();
SPIInit();
IRQInit(); /* Turn on the IRQ pin. */
gu8RTxMode = MC13192_RESET_MODE;
MC13192_RESET = 1; /* Take MC13192 out of reset */

while (u8AttnIrq == FALSE) {
if (IRQFLAG == 1) { /* Check to see if IRQ is asserted */
u16IrqReg = SPIDrvRead(0x24); /*
* Clear MC13192 interrupts and
* check for ATTN IRQ from 13192
*/
u16IrqReg &= 0x400;
if (u16IrqReg == 0) {
u8AttnIrq = FALSE;
}
else {
u8AttnIrq = TRUE;
}
}
}


上面是我调试时显示的
在以下两个地方循环跳不出去是什么意思,我的ATTN那边连线感觉没问题啊。还有sard板上连接ATTEN的那个470k电阻,为何一上电就成短接状态,我的板子也是这个情况,这期间到底发生了什么事啊?那个470k电阻也是接电源的。
while (u8AttnIrq == FALSE) {
if (IRQFLAG == 1) { /* Check to see if IRQ is asserted */
我始终无法冲过这个MCUinit()
卡在这个while (u8AttnIrq == FALSE) {
if (IRQFLAG == 1) { /* Check to see if IRQ is asserted */

这是硬件原因还是软件原因。我哪儿没设置好么?
你用的是smac中的哪个应用程序
这个硬件和软件原因都有可能存在,一点一点的排除。
如果你的MCU和13192的连线和SARD完全相同,应该硬件的原因会少些。
这只不过是初始化程序的部分呢,是在mcuinit()里的,mcuinit()又在mcu_hw_config.c里面定义。我分析了下那个程序流程,
GPIOInit();
SPIInit();
IRQInit(); /* Turn on the IRQ pin. */
gu8RTxMode = MC13192_RESET_MODE;
MC13192_RESET = 1; /* Take MC13192 out of reset */

while (u8AttnIrq == FALSE) {
if (IRQFLAG == 1) { /* Check to see if IRQ is asserted */
u16IrqReg = SPIDrvRead(0x24); /*
* Clear MC13192 interrupts and
* check for ATTN IRQ from 13192
那个irqinit()会把irqflag置0,后来13192从reset状态回来,这期间应该发生了什么事,把irqfalg置1。而我的板子没做到。


再请看void MC13192Restart()
{
//UINT8 u8AttnIrq =0; //mod
//UINT16 u8AttnIrq = 0; //mod

gu8RTxMode = SYSTEM_RESET_MODE;
IRQInit(); /* Turn on the IRQ pin. */
MC13192_RESET = 1; /* Take MC13192 out of reset */
while (IRQSC_IRQF == 0) /* Poll waiting for MC13192 to assert the irq */
; /* Empty Body */ /* (i.e. ATTN). */
SPIDrvRead(0x24); /* Clear MC13192 interrupts */
IRQACK(); /* ACK the pending IRQ interrupt */
IRQPinEnable(); /* Pin Enable, IE, IRQ CLR, negative edge. */
}
Poll waiting for MC13192 to assert the irq ,如果没有这个,那么它始终循环在while (IRQSC_IRQF == 0)里无法跳出的,所以reset为1时那个irqf是不是会被置1呢,但这个又是怎么发生的呢?

现在还没涉及到应用层面,mcu初始化始终无法完成。
连线完全相同,不过,那个sard板上PTB4,PTB5连接到13192的GPIO1,GPIO2这两根决定天线开关选择的线我没接,不知道这个影响大不大。
我现在再焊块板子试试。

同时请问,我要选择mcu内部时钟而不用13192的时钟,怎么设置?

[此贴子已经被作者于2007-2-28 11:41:02编辑过]

13192从reset醒来应该会有IRQ信号给MCU,irqflag=1使得程序正常执行
GPIO1和GPIO2在smac的程序中应该影响不大,没有什么大的用处
选择内部时钟的话需要切换时钟工作模式,设置MCU工作在self clock mode
设置ICGC1寄存器

zigbee测试板硬件问题(更换主题

我自制的板子,采用mc13213还有13192+gt60两种方案,像那些应用端口,如按键,led灯,串口线和官方的sard板不一样。
请问我怎样才能将程序写进单片机内?
我自己仿照sard板制定了我自己的库文件和c文件,以匹配那些管脚上的按键led等等。
但那些target选项里没有我定义的那些,只有13192sard,13213ncb等等那些,我在里面添加上我的库文件和c文件也没用。请问我该在那个地方更改?
我现在采用smac4.2里的框架,自己编写简单的测试程序,但目前卡在程序烧写上了,请诸位大侠们指教。

[此贴子已经被作者于2007-3-1 15:31:25编辑过]

13213板别的地方都没问题,但天线部分看来不过关啊,高手们能说说zigbee硬件在天线上该怎么做么,还有我现在该如何调试查出问题所在?
我在制作天线时主要看了差分线部分,微带线部分(根据一个软件来计算微带线长宽厚度),印刷天线部分,至于元器件和sard板完全一样,所不同的是采用了0805和部分0603,不像sard板的0402。
各位制作硬件成功过的能否谈谈自己的经验啊。大家投身这一行,迟早要走这一步的。
先感谢版主和jimmy tan的热情了。但一个论坛的成长不能只靠版主,还得靠大家共同探讨进步。
sard板是用2个印刷天线的,请问sard板的印刷天线厚度是多少,设计时有什么要求。天线附近敷铜有什么要求?
还有那个sard板的RF和PA电路还有双印刷天线能否用到13213上,
用了双印刷天线后是否不需要ct-bias这个来选择天线开关了?

还有那个sard板原理图上那个120ohm, 22.5deg,11.5mm以及另一个类似的线,我把它理解成微带线,那个设计有什么要求吗?为何pcb上那个4.5mm的是用了好几个直角弯,是特意这样做的么,???
往上up一下,

版主可能没看到。

我还想问下RF部分的阻抗怎么测量啊,比如13192内部阻抗,天线阻抗等等。要是不知道这些值,我也没法用史密斯圆做阻抗匹配啊。

原来天线可能就出在这些问题上。

希望高手大虾们多给些实际的资料,不胜感激。
返回列表