搜索
bottom↓
回复: 77

CC1101嫁给STM32的那些事儿(斑竹,你好意思不给我加精么?)

  [复制链接]

出0入0汤圆

发表于 2013-4-23 15:39:32 | 显示全部楼层 |阅读模式
最近有个项目在做升级版,本来是用的TI的CC430F5137(本质是msp430 + CC1101),考虑到功能多且扩展的需求比较明显,所以选择了 STM32F107VC + CC1101.
在调试时,发现问题点还是挺多的,在这里稍微零散的总结一下,希望对有需要的兄弟姐妹有所帮助。

1、由于时间的关系,我可能会零散的写这个帖子,在我自己认为写完之前,我不会回答各位提出的任何问题以保持我资料的完整性(问的问题也许在后续中会提到);
2、错误在所难免,欢迎高手指正;但绝对不欢迎那种只说不好而不讲理由的。(换句话说,你说了自己的理由,哪怕是错误的也欢迎,但就是讨厌那种说一句牛逼讽刺的话就飘过的);
3、本帖子对STM32高手的帮助相当有限,如果阁下是STM32高手而又不愿意浪费时间,请绕行。
4、如果你看了我的帖子真的很有帮助,有想请我吃饭的,可以发消息给我 ^_^.

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-4-23 15:45:08 | 显示全部楼层
第一个问题,就是SPI的接口。
这个问题看似简单,而当CC1101嫁给STM32后就变得不简单了。
首先是SPI接口的IO口配置的问题,STM32的SPI口有两种模式,一种是带CS脚(4线模式,硬件控制CS),一种是不带CS脚(3线模式,软件控制CS),个人推荐直接用3线模式,有两个原因,我测试的时候发现如果用硬件CS的时候会出错,也许是因为Slave设备需要CS拉低一点时间操作比较安全,第二个原因是正式的操作时,有可能要用到CS脚(看CC1101的datasheet),好了,我们选择SPI_NSS_Soft

出0入0汤圆

 楼主| 发表于 2013-4-23 15:52:55 | 显示全部楼层
SCK 和 MOSI 引脚设置为外部推挽输出GPIO_Mode_AF_PP;这个大家都知道;问题是MISO设置成什么为好呢?可以肯定是设为输入,但是是上拉输入(GPIO_Mode_IPU),下拉输入(GPIO_Mode_IPD)还是悬空输入(GPIO_Mode_IN_FLOATING)?这个一般要看实际外部Slave设备的端口能力,一般都是设置为悬空输入,但在接CC1101的时候,个人建议使用上拉输入(GPIO_Mode_IPU),原因就在于TI系列的芯片的SPI口,会要求去判断这个口为低才表示空闲。

出0入0汤圆

 楼主| 发表于 2013-4-23 16:10:30 | 显示全部楼层
SPI的极性和象位问题。
这个其实还是要看Slave设备。通过看CC1101的datasheet我们可以知道,应该设置成闲时为低(SPI_CPOL_Low),在第一个边缘抓数据(SPI_CPHA_1Edge)。有意思的是,如果你设置成反的(SPI_CPOL_High + SPI_CPHA_2Edge),一般也能跑的,只要速率不是太快。我之前在网上搜到两个Demo程序,一个正确,一个错误,但都能收到数据,开始是很疑惑的。后来分析,负负得正,在速率不是太快的时候恰好能凑上去。

出0入0汤圆

 楼主| 发表于 2013-4-23 16:20:01 | 显示全部楼层
SPI的速率问题。
我提这个问题可能很多人不屑一顾,但是,你的程序真的能让你的PSI跑那么高的速率吗?
你用示波器看看你的SPI的CLK波形,很有可能你发一串数据时,两个Byte之间有个挺长的时间间隔。
这里说说我自己的体会,第一,就是我不建议SPI使用中断,直接用查询方式反而会可靠一些,最重要的是,如果你的SPI速率比较快的话,使用中断,反而会使真正的速度(不是CLK速率,而是读写一串数据的速度)会慢下来。
那么接下来,除了初始化程序,其它的自己写的SPI的读写程序,最好不要调用ST的库函数,而直接去操作寄存器,可以省掉函数调用和一些堆栈的时间。
最后,程序也要非常有技巧性,哥写嵌入式程序好歹也有10多年了,还是第一次使用 goto语句(以前并不是不敢用,而是都可以找到替代的方法,觉得容易维护一些),这里就恕我不公布我的程序了,你懂的。

PS:
关于goto,我多说一句,很多人建议废除;其实我是不赞同的。说实在话,程序出问题是程序员的错,而不是goto,就想犯罪是人的错而不是金钱一样。但是另一方面我又极力的建议想办法不使用goto语句,因为它打断了程序的架构,也容易出现bug。goto只有在速度有非常强烈的需求时才能使用。

出0入0汤圆

 楼主| 发表于 2013-5-4 15:48:09 | 显示全部楼层
虽然斑竹没有给我加精,也没有网友请我吃饭,但本着做事有始有终的原则,继续说说CC1101嫁给STM32的这场婚姻……

出0入0汤圆

 楼主| 发表于 2013-5-4 15:58:14 | 显示全部楼层
OK,前面说了STM32的SPI的问题,我们接下来再说说CC1101的问题:
第一个问题是MISO引脚,有三个重点:
1、通过SPI操作CC1101的时候,要先判断MISO是否为低(为高则说明CC1101处于忙或者非激活状态),这是之前说CS用SPI_NSS_Soft的原因之一。另外也是我建议引脚配置GPIO_Mode_IPU的原因。
2、CC1101的MISO是可以设置成GDO1,不过默认是做MISO。
3、即使作为MISO,系统的状态也要使晶振起振(用strobe命令),才能有数据输出到STM32中,所以不仔细看datasheet,可能会发现读出来的数据老是0啊!

出0入0汤圆

发表于 2013-5-4 16:00:42 | 显示全部楼层
支持一下。能够写自己的切身体会是很难得的。

出0入0汤圆

 楼主| 发表于 2013-5-4 16:06:59 | 显示全部楼层
然后要说说CC1101的寄存器和一些操作。
简单说,操作主要有:
1、single write
2、single read
3、burst write
4、burst read
5、strobe

本来看上去没有什么,但变态的是有些寄存器和strobe命令的地址是重叠的。
深刻理解英文datasheet page70(SWRS061H)的那个图。
主要是有几个坑爹的事情:
1、0x30~0x3D的位置 single read,也会是strobe的命令(最坑爹的);
2、0x3E,0x3F位置的burst read,其实是读FIFO。

出0入0汤圆

 楼主| 发表于 2013-5-4 16:23:38 | 显示全部楼层
第三个问题,寄存器配置。
有人说,不是有专门的TI提供的软件么?没错,我要说的就是这个软件,叫做 “Smart RF studio”。
只是,这个软件我本身也还没完全弄明白,希望有高手能补充。
1、设计时,要注意平衡,Data rate越高,那么灵敏度就会越低;
2、频段是有限的(比如433M其实是433.07MHz~433.92MHz),channel spacing越宽则能支持的channel就越少;
3、channel spacing至少要是data rate的1倍,当然间隔越大,越没那么容易干扰
4、个人还不是太明白“RX filter BW” 和 “Deviation”,我最初设计时是参考demo的做法,希望有牛人来解释一下。
5、注意中心频率的问题,以433M为例,你的频率间隔是50K,那么Base frequency应该是433.07M + 0.05M = 433.12M。

出0入0汤圆

 楼主| 发表于 2013-5-4 16:30:04 | 显示全部楼层
第四个问题,正常工作的模式设计。
简单说,是查询模式还是中断模式?
我在网上搜到的程序,包括TI官方的demo程序,都是查询模式,这个可以演示一下收发的功能。
但是,实际情况却是:天知道它什么时候来RF信号啊?
所以这里我要说的是中断模式。
CC1101的GDO是可以做这些功能的,让它接SMT32的外部中断。
深刻理解因为英文datasheet page 62上的那个表格。

出0入0汤圆

 楼主| 发表于 2013-5-4 16:41:15 | 显示全部楼层
有两种方式:(假定GDO没取反)
方式一、GDO配置成0x06.
这种模式,当处于接收状态,收到一个同步字时会变高,当收到一帧数据或者中间出错(地址错,溢出等)会变低。我们只要配置SMT32的外部中断为下降沿中断,就可以在中断程序中去读RX FIFO,能正确读出就去处理。
方式二、GDO配置 0x07 --> 0xXX
这种方式需要在切换收/发的时候还要去改变这个寄存器,比较烦而且容易出错,好处是不会产生过多的STM32外部中断。

个人推荐:
1、如果系统是主从模式,用方式一吧;
2、如果系统是星型结构,用方式二吧;

出0入0汤圆

 楼主| 发表于 2013-5-4 16:43:34 | 显示全部楼层
第五个问题,载波侦听。
也就是说,你在发RF信号的时候,要看看这个频段是否有人在用,如果有人在用的话,就再等等,等待时间太长就timeout吧!

CC1101_PKTSTATUS(0x38)的BIT4

出0入0汤圆

 楼主| 发表于 2013-5-4 16:44:34 | 显示全部楼层
其实CC1101嫁给STM32还有一些琐碎的事,但估计都不是那么坑爹,八卦到此结束!

出0入0汤圆

发表于 2013-5-6 20:02:41 | 显示全部楼层
斑竹,为何我的也是spi接口,然后GD的中断,但是仅能够接收一次发送过来的数据,其他情况接收得到不准;而且我在线运行,每次能都进中断,一全速运行就进不了……麻烦解释哈

出0入0汤圆

 楼主| 发表于 2013-5-7 09:00:42 | 显示全部楼层
excellentmary 发表于 2013-5-6 20:02
斑竹,为何我的也是spi接口,然后GD的中断,但是仅能够接收一次发送过来的数据,其他情况接收得到不准;而 ...

1、哥不是斑竹
2、中断……你设置的是什么中断?你进中断是否清除掉了中断标志?
3、没听明白你的描述

出0入0汤圆

 楼主| 发表于 2013-5-7 09:01:33 | 显示全部楼层
第三点,可能还是SPI的配置的问题,详细看看我前面关于SPI设置的描述(尤其相位等问题)

出0入0汤圆

发表于 2013-5-7 09:11:09 | 显示全部楼层
想要精,是需要条件滴~~~~

出0入0汤圆

发表于 2013-5-7 09:21:02 | 显示全部楼层
LZ资料整理一下

出0入0汤圆

发表于 2013-5-7 19:49:40 | 显示全部楼层
呵,楼主哈!1、设置的GD两个管脚的,主要用GDO1,仅仅是起个告知数据来临的作用,然后RFReceivePacket(wireless_union_in.parameter+1,&len);函数读取的;
                   2、 进中断是关了标志位的,只是我单步执行可以接收到发送来的数据……但也仅有次数pktLen 是和我发送的字节数是一致的(pktLen = halRfReadReg(TI_CCxxx0_RXFIFO); )
                    3、 此外 无线模块发热蛮厉害,是数据过多溢出原因吗?
                    4、个人猜想是不是配置 和 中间发送接收的延时的问题,但是初始化的配置我是找51 全部一致过来的 PS:发送应该是没有问题的,我之前接收端是在51上写的,可以正常接收发送,现在仅仅是移植到stm32上,所有配置都一样,实在搞不懂为啥……

出0入0汤圆

 楼主| 发表于 2013-5-7 20:40:10 | 显示全部楼层
excellentmary 发表于 2013-5-7 19:49
呵,楼主哈!1、设置的GD两个管脚的,主要用GDO1,仅仅是起个告知数据来临的作用,然后RFReceivePacket(wir ...

GDO1 设置成多少(0x06?)

出0入0汤圆

发表于 2013-5-7 20:49:07 来自手机 | 显示全部楼层
爪机无力,马克先

出0入0汤圆

发表于 2013-5-7 21:01:00 | 显示全部楼层
是的 0x06  用的是GDO2  和 GDO0  两个连着外部中断,其他spi配置和大哥前面讲的一样,那么,小弟那些问题……

出0入0汤圆

 楼主| 发表于 2013-5-7 21:08:48 | 显示全部楼层
1、看看是否有其它设备在使用这个频段,我之前测试也遇到过这个问题,就是不断收到同步字,但不是发给自己的,所以一直会有中断,但读RX FIFO的长度为0.
2、不知道你是否加了PA之类的放大器,不过我的测试不至于有太大的发热才对,检查一下硬件。(哥做软件的,硬件的有另外的哥们来搞,我们开始也发热,后来搭档硬件上搞定了)
3、如果是加了放大之类的,先去掉试试(我们开始就这样我软件先测试,他去找硬件问题去了)。
4、我们的设备用了GDO0来控制PA的收发,看你的是不是也是这样。

出0入0汤圆

发表于 2013-5-7 21:14:44 | 显示全部楼层
Louis_Bright 发表于 2013-5-7 21:08
1、看看是否有其它设备在使用这个频段,我之前测试也遇到过这个问题,就是不断收到同步字,但不是发给自己 ...

好贴!!

最近我也调个周立功的433  CC1100 模块~


不过调通了~  但是代码而已~


还没钻研透彻

出0入0汤圆

发表于 2013-5-7 21:25:06 | 显示全部楼层
说的挺详细的

出0入0汤圆

发表于 2013-5-7 22:17:37 | 显示全部楼层
经验之谈,感谢分享

出0入0汤圆

发表于 2013-5-8 15:41:55 | 显示全部楼层
433M 应该无人用,我每次换成51节点时候就能和网关连接顺畅,用现在调试的M3 就没发现什么数据……

出0入0汤圆

发表于 2013-5-10 19:23:40 | 显示全部楼层
Louis_Bright 发表于 2013-5-7 21:08
1、看看是否有其它设备在使用这个频段,我之前测试也遇到过这个问题,就是不断收到同步字,但不是发给自己 ...

请教楼主,我也是使用中断模式接收数据,cc1101工作在WOR模式,接收数据后,转成发送状态时,数据不能正常发送,不知为何,(我用另一块CC1101监视所有的CC1101的通信数据)

出0入0汤圆

发表于 2013-5-10 22:35:00 | 显示全部楼层
过来顶顶楼主!~ 哈哈!!

stm32的SPI是个硬伤,跟着楼主从实战学习

出0入0汤圆

发表于 2013-5-10 22:54:41 | 显示全部楼层
支持一下。能够写自己的切身体会是很难得的。

出0入0汤圆

发表于 2013-5-10 23:26:32 | 显示全部楼层
支持楼主,干的不错。。

出0入0汤圆

发表于 2013-5-10 23:52:02 | 显示全部楼层
楼主说的不错!支持一下

出0入0汤圆

发表于 2013-5-11 00:40:38 | 显示全部楼层
Louis_Bright 发表于 2013-4-23 15:45
第一个问题,就是SPI的接口。
这个问题看似简单,而当CC1101嫁给STM32后就变得不简单了。
首先是SPI接口的I ...

一般应用对这些芯片的SPI的时候都是CS是自己控制的,没有哪家的芯片CS可以完全硬件控制的。

出0入0汤圆

发表于 2013-5-11 04:14:58 | 显示全部楼层
用过。加了大功率,距离还是近,不得不放弃了。

往下走吧。前期都是小菜。距离和功耗才是王道。

出0入0汤圆

发表于 2013-5-11 11:39:57 | 显示全部楼层
Louis_Bright 发表于 2013-4-23 16:20
SPI的速率问题。
我提这个问题可能很多人不屑一顾,但是,你的程序真的能让你的PSI跑那么高的速率吗?
你用 ...

“你用示波器看看你的SPI的CLK波形,很有可能你发一串数据时,两个Byte之间有个挺长的时间间隔。”
这个深有感触,用STM32的SPI2读写SD卡,SPI的时钟使用18MHZ,一次读写512字节,用示波器观察CLK的波形发现真正读写数据的那8个CLK的时钟占用时间只有445ns左右,这个时间是正确的。
但是2个byte之间的时间竟然有4~5us,是读写数据占用时间的10倍左右,这样就造成了写一个扇区(512字节)速度很慢,一直没有找到好的解决方法。

SPI是使用查询的方式没有使用中断,SPI初始化和读写的函数都是调用ST的库函数,写数据就是反复调用SPI读写那个函数。
想请教下,为了把SPI的速度提上去,除了把读写SPI的那个函数用寄存器操作外,很想知道你说的使用goto语句是怎样实现对SPI速度的优化的。谢谢!!

出0入0汤圆

发表于 2013-5-11 12:05:22 | 显示全部楼层
同问,如何提高速度?

出0入0汤圆

发表于 2013-5-11 13:16:31 | 显示全部楼层
一个标题搞得跟菜农什么全球征婚似的,技术东西严肃点吧,瞎扯的话,可以写stm32与xxx搞基,与yyy搞菊花!

出0入0汤圆

发表于 2013-7-3 00:10:41 | 显示全部楼层
请教传输距离有没有得优化,好像隔了一面墙就出问题了

出0入0汤圆

发表于 2013-7-8 15:23:09 | 显示全部楼层
mark 支持

出0入0汤圆

发表于 2013-7-8 16:37:27 | 显示全部楼层
请问楼主你的空中速率是多少    cc1101极限是500K    在四五百K的情况下能传多远     加个1W功放呢   

出0入0汤圆

发表于 2013-8-13 11:07:13 | 显示全部楼层
正在调试 收益匪浅啊 我也得注意一下啊

出0入0汤圆

发表于 2013-8-13 13:04:44 | 显示全部楼层
CC1101L有没有碰到锁死的状态,中断变高电平了就下不来了

出0入0汤圆

发表于 2013-8-13 21:09:33 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2014-1-8 19:14:57 | 显示全部楼层
能发个工程文件瞧瞧嚒……我的邮箱是376830994@qq.com,楼主好人!

出0入0汤圆

发表于 2014-1-8 19:20:33 | 显示全部楼层
先顶下楼主,STM32的那个SPI,我也搞了好久。学习!

出0入0汤圆

发表于 2014-1-11 00:21:45 | 显示全部楼层
顶一下,之前也用了一下CC1101,有个命令定义打错,查问题找了好久.

出5入10汤圆

发表于 2014-1-14 13:25:16 | 显示全部楼层
好东西!!!!mark

出5入10汤圆

发表于 2014-1-14 13:25:32 | 显示全部楼层
好东西!!!!mark

出0入0汤圆

发表于 2014-4-3 11:27:33 | 显示全部楼层
想求大侠的工程看看,最近搞CC1101,发送端发送了,可是接收端没有接收到,不知是哪的问题呢,没有死在GDO0那些的情况啊

出0入0汤圆

发表于 2014-4-3 11:27:49 | 显示全部楼层
邮箱123238334@qq.com  感谢了

出0入0汤圆

发表于 2014-7-15 10:30:32 | 显示全部楼层
非常有用哈~

出0入0汤圆

发表于 2014-7-15 13:14:24 | 显示全部楼层
MARK,谢谢~~~

出0入0汤圆

发表于 2014-7-15 15:51:05 | 显示全部楼层
MARK                           

出0入0汤圆

发表于 2014-7-15 16:36:47 | 显示全部楼层
CC1101的寄存器超多,希望大家在搞它的驱动的时候,最好仔细阅读其英文文档,严格按照其文档说明做驱动就没有问题了。

出0入0汤圆

发表于 2014-7-15 17:28:14 | 显示全部楼层
mark
一下

出0入0汤圆

发表于 2014-7-15 20:53:29 | 显示全部楼层
mark...后面用到。。。

出0入0汤圆

发表于 2014-7-15 23:40:25 | 显示全部楼层
高手顶一下。

出0入0汤圆

发表于 2014-7-16 08:53:20 | 显示全部楼层
我最近長搞cc1110, 其實跟cc1101是一脈相承的, 只是裡面有包顆8051,

在rf方面, 我的建議是MARC_STATE要去看,  一般 Tx Rx 切換, 我會先切 Idle, 避免發生 RXFIFO_OVERFLOW 或是 TXFIFO_UNDERFLOW,
因為這兩種狀況都要先切換回idle, 後續的rf才能動作, 索性每次切換直接先切 Idel.

CALIBRATE就看個人喜好什麼時候做, 有人5-10次Tx或Rx做一次, 我是比較怕頻偏, 所以是每次切換RX TX都會做.

至於傳輸距離, 要去看天線的場型 天線與晶片的匹配 傳送的DataRate 暫存器靈敏度的設置 發送功率的設置.....

出0入0汤圆

发表于 2014-9-26 11:34:29 | 显示全部楼层
写的很好,每个人的调试历程都是这样的,能让人少走弯路

出0入0汤圆

发表于 2014-9-26 11:45:13 | 显示全部楼层
刚准备用 CC430F5137。学习学习。

出0入0汤圆

发表于 2014-9-26 11:49:45 来自手机 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-9-26 12:59:48 | 显示全部楼层
几年前搞过CC1101,也是摸索了很久。

出0入0汤圆

发表于 2014-9-26 13:50:09 | 显示全部楼层
顶起来           

出0入0汤圆

发表于 2014-9-26 13:52:31 | 显示全部楼层
谢谢分享,现在还没用到,等用到了,再来精读,感谢!

出0入0汤圆

发表于 2014-11-6 09:12:35 | 显示全部楼层
mark!               

出0入0汤圆

发表于 2015-4-16 17:45:31 | 显示全部楼层
谢谢LZ分享,新手学习了

出0入45汤圆

发表于 2015-4-16 18:15:24 | 显示全部楼层
ARM2012 发表于 2013-7-3 00:10
请教传输距离有没有得优化,好像隔了一面墙就出问题了

加外部功放管。提升发射功率。或者换SI4xxx 能达到2W还是多少的芯片

出0入0汤圆

发表于 2015-4-17 15:25:47 | 显示全部楼层
myiccdream 发表于 2015-4-16 18:15
加外部功放管。提升发射功率。或者换SI4xxx 能达到2W还是多少的芯片

silicon labs的SI4432,SI4438,SI4463的最大功率输出20dBm,也就是100mW,可到不了2W.我TI的和Silabs的芯片都用过,就射频性能而言,个人感觉TI的CC系列某些芯片还是有点差。CC有的功放芯片射频不太容易调。当然一般没有微波仪器,无法测试的朋友可能不关注这个。但如果做产品,建议大家还是要用仪器仔细调试。

出0入0汤圆

发表于 2015-4-17 21:36:01 | 显示全部楼层
不错,楼主详细的分享了自己的经验,看了以后,自己可以少走弯路了,谢谢!

出0入0汤圆

发表于 2015-4-17 22:47:34 | 显示全部楼层
收藏了,哈哈

出0入8汤圆

发表于 2015-4-18 09:43:03 | 显示全部楼层
先学习了,楼主有没有搞过433m组网呢

出0入0汤圆

发表于 2015-11-25 09:53:10 | 显示全部楼层
能给个发送数据格式,能给个example 吗   比如 55D391D39108AABBCCDD11223344    55  前导码  D391 是同步字  08是数据长度  后面是数据

出0入0汤圆

发表于 2015-11-25 19:28:39 | 显示全部楼层
留名                     

出0入0汤圆

发表于 2016-3-7 23:37:21 | 显示全部楼层
学习了

出0入0汤圆

发表于 2016-3-8 09:37:54 | 显示全部楼层
感觉用ST的库不管是SPI还是I2C的中断都比查询慢太多了

出0入0汤圆

发表于 2016-3-8 11:37:31 | 显示全部楼层
楼主,我任务这都不是关键问题,关键问题是怎么让CC1101 组网

出0入0汤圆

发表于 2017-8-2 00:38:32 | 显示全部楼层
1328616904 发表于 2016-3-8 11:37
楼主,我任务这都不是关键问题,关键问题是怎么让CC1101 组网

你好,请问你的组网搞定了吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-6 21:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表