Board logo

标题: zigbee测试板硬件问题(更换主题 [打印本页]

作者: windark    时间: 2007-2-25 15:49

我将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;
}
谢谢指教
作者: seuafu2005    时间: 2007-2-26 09:21

将程序烧写进片子是通过BDM头,可以参考SARD的原理图。
如果你的MCU和13192之间的连线是和SARD一样的,就选择SARD的target,改动一下你对LED和按键的设置。
如果MCU和13192之间的连线和SARD不一样,那需要自己手动更改了,从底层改起。
你贴的这段程序是对13192进行初始化的操作,通过SPI口读写13192的寄存器
作者: windark    时间: 2007-2-26 10:23

程序能烧进去,当然不能执行。

我把13192sard.h和13192sard.c改了,另外还要改那些文件?
mcu和13192连线一样的。
作者: windark    时间: 2007-2-26 10:27

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哪去了,还有别的串口线?



作者: windark    时间: 2007-2-26 11:04

又发现个问题,自己用的是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?
作者: seuafu2005    时间: 2007-2-26 17:44

MCU和13192连线是否一样,关键看对应的口,打个比方,你的PTB2和13192的GPIO1相连,那么SARD也是要PTB2和13192的GPIO1相连。这个和芯片封装没有关系,不受影响的,芯片封装只是引脚的顺序可能有些差异,比如这个PTB2在1脚,那个在2脚。

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

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

PTCD7的定义可以仿照前面的6个定义,最后的mask是改成255
作者: windark    时间: 2007-2-27 10:28

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 */

作者: windark    时间: 2007-2-27 15:44

我始终无法冲过这个MCUinit()
卡在这个while (u8AttnIrq == FALSE) {
if (IRQFLAG == 1) { /* Check to see if IRQ is asserted */

这是硬件原因还是软件原因。我哪儿没设置好么?
作者: seuafu2005    时间: 2007-2-28 10:11

你用的是smac中的哪个应用程序
这个硬件和软件原因都有可能存在,一点一点的排除。
如果你的MCU和13192的连线和SARD完全相同,应该硬件的原因会少些。
作者: windark    时间: 2007-2-28 11:41

这只不过是初始化程序的部分呢,是在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编辑过]


作者: seuafu2005    时间: 2007-2-28 14:24

13192从reset醒来应该会有IRQ信号给MCU,irqflag=1使得程序正常执行
GPIO1和GPIO2在smac的程序中应该影响不大,没有什么大的用处
选择内部时钟的话需要切换时钟工作模式,设置MCU工作在self clock mode
设置ICGC1寄存器
作者: windark    时间: 2007-3-1 15:31     标题: zigbee测试板硬件问题(更换主题

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

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


作者: windark    时间: 2007-3-1 15:39

13213板别的地方都没问题,但天线部分看来不过关啊,高手们能说说zigbee硬件在天线上该怎么做么,还有我现在该如何调试查出问题所在?
我在制作天线时主要看了差分线部分,微带线部分(根据一个软件来计算微带线长宽厚度),印刷天线部分,至于元器件和sard板完全一样,所不同的是采用了0805和部分0603,不像sard板的0402。
各位制作硬件成功过的能否谈谈自己的经验啊。大家投身这一行,迟早要走这一步的。
先感谢版主和jimmy tan的热情了。但一个论坛的成长不能只靠版主,还得靠大家共同探讨进步。
作者: windark    时间: 2007-3-5 11:36

sard板是用2个印刷天线的,请问sard板的印刷天线厚度是多少,设计时有什么要求。天线附近敷铜有什么要求?
还有那个sard板的RF和PA电路还有双印刷天线能否用到13213上,
用了双印刷天线后是否不需要ct-bias这个来选择天线开关了?

还有那个sard板原理图上那个120ohm, 22.5deg,11.5mm以及另一个类似的线,我把它理解成微带线,那个设计有什么要求吗?为何pcb上那个4.5mm的是用了好几个直角弯,是特意这样做的么,???
作者: windark    时间: 2007-3-6 11:28

往上up一下,

版主可能没看到。

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

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

希望高手大虾们多给些实际的资料,不胜感激。
作者: seuafu2005    时间: 2007-3-6 13:07

我看到帖子了,但是我对硬件天线这部分不熟悉,还是请其他高手来看看吧
作者: lanceloat    时间: 2007-3-6 14:36

您好
剛好我們也有遇到類似的問題 大概也發現問題所在
在這邊提供給您 看對您有沒有幫助
您可以量測MC13213 chip所拉出的IRQ pin 是否因為溢錫的關係跟旁邊的SPI pin有連結
造成您IRQ pin 有外部的loading 所造成的
作者: windark    时间: 2007-3-7 14:25

版主帮我咨询下你们公司里的硬件高手吧,或者给我他们的邮箱也可以。

还有谢谢lanceloat的提醒,我测试了下,没有连接啊。你用繁体的,是广东人嘛?
还有你说的应该是GT60的和13192相连那个IRQ吧,13213的IRQ看不到的,封装在里面了。

作者: jimmytan    时间: 2007-3-7 18:21

你好,其实在射频部分,阻抗对性能有很大的影响。走线的阻抗是由线宽,板厚和材质来决定的。也可以根据这些参数来做理论的计算。一般来说,芯片外围在射频端都要加一些匹配网络来调整阻抗特性,以达到好的发射和接收性能。在MC13213的射频部分,天线部分是采用50欧姆的阻抗。阻抗匹配是一项比较麻烦的工作,而且需要一些仪器才可以。所以我建议如果能够直接在MC13213的参考设计上修改是最好的。现在飞思卡尔提供参考设计的PCB文件,是Cadence/Allegro的。
作者: jimmytan    时间: 2007-3-7 18:25

还有,你现在不能初始化,如果你的设计和sard没有什么区别的话,我想你最大的可能是因为芯片焊接不好的原因。你需要检查一下13192的焊接,有没有短路或者虚焊。
作者: zhfhuifang    时间: 2007-3-16 22:33

如果我把硬件设计中的MCU换成是Motorola的16位的DSP56852和13192进行通信,SMAC的修改要注意哪些问题,我如果对13192断口控制写在另外的文件中,可以把port_config_SARD.h这个文件去掉的吧,还有对SMAC的修改是不是主要是对硬件资源寄存器的一些修改啊?
作者: zhfhuifang    时间: 2007-3-17 18:33

13192的复位时间长短有没有什么特殊的要求的?
作者: windark    时间: 2007-3-19 08:24

这么修改就麻烦了,所有端口全得重新定义啊,要不以后程序烧进去也不能运行,还有miso和mosi这些与13192相连的口也得重新定义,怎么用16位的?

这些还是问下高手比较可靠,召唤之。我也是初学者,只用过gt60和13213。

那个复位时间长短,还是拿个示波器看下波形吧,我还没试过呢。
作者: seuafu2005    时间: 2007-3-19 10:03

13192和DSC之间的通讯,可以参考56F801XSMAC.ZIP
到网页下载
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC13192&nodeId=01J4Fs25658166





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0