社区导航

 
查看: 180|回复: 3

[原创] 【KW41z】一起来玩 thread +用coap点灯

[复制链接]

2254

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 damiaa 于 2017-7-19 21:23 编辑

一起来玩 thread
刚开始,所以只会点皮毛哦。哈哈。
1,看看这图

还有这图

基本上就清楚了。
都是基于802.15.4,但支持6lowpan,ipv6,udp还有应用层可以跑socket,coap等。


2,如果有兴趣,可以看看Kinetis Thread Stack Shell Interface User's Guide这个文档,这个在KW41Z的开发包的文档里有。这个SHELL可以帮你快速
了解 。
3,准备putty和两块板子。都烧写router_eligible_device的固件。用IAR什么的都可以烧。 F8EA779E5B2856B33B9D2A45FD30ECA6.jpg
4,插上两块板子,看到两个串口。用
putty连上他们 (选串口连接,波特率115200).
5,一个敲入thr create,另一个敲入thr join成功了会告诉你。这个时候thread网络就创建起来并且连网了。 4C6A18ADFE1B15C87A256CD9DFD3F155.jpg
6,两个串口里敲敲
     ifconfig
     thr get channel     thr get panid
     thr get neighbors
39F8B3E38B18C8D4EA2E33AB76C746BF.jpg
来关心关心网络配置,通道,PANID和邻居。看看他们的 地址,好像高位都一样。就低位不一样

7,coap点灯试验
在一个板子的串口敲入:
coap CON POST  fd57:ba6:36b4:b6a8::ff:fe00:400 /led on 打开另一个板子的灯LED4
19644E6C4F5996DBF6E9E744F21F9E4C - 副本.jpg
coap CON POST  fd57:ba6:36b4:b6a8::ff:fe00:400 /led off 关闭另一个板子的灯LED4
03AC1177A541034D8F35CAAC7B91A382.jpg
fd57:ba6:36b4:b6a8::ff:fe00:400是另一个板子的Mesh local address (ML16)地址。

反之,从另一个板子也可以同样操作。另一个板子的地址不一样fd57:ba6:36b4:b6a8::ff:fe00:0 !!!


shell的有些功能不能用,比如echo 是因为没开启这个功能。在程序的app_thread_config.h中有相关的配置选择,选TRUE
捕获22.PNG

下次继续。哈哈。


此内容由EEWORLD论坛网友damiaa原创,如需转载或用于商业用途需征得作者同意并注明出处











回复

使用道具 举报

2254

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 damiaa 于 2017-7-19 21:42 编辑

读码 读码 读码....
图一 总体:
捕获23.PNG
图二:板子硬件相关代码文件
捕获24.PNG

图三:基本设备驱动
捕获25.PNG

图四:框架:

捕获26.PNG
图五:Freertos代码
捕获27.PNG
图六:ieee_802.15.4
捕获28.PNG
图七:Nwk_IP
捕获29.PNG
图八:Source
捕获30.PNG


回复 支持 反对

使用道具 举报

2254

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 damiaa 于 2017-7-19 21:54 编辑

读码 读码 读码....
Board:
Board.h Board.c 板子各种的初始化
Clock_config.h Clock_config.c基本时钟配置,先路过。
Gpio.h Gpio.c GPIO的定义 比如SWITCH,LEDS 要修改按键和LED要注意这里
gpioInputPinConfig_t switchPins[] = {
    {
        .gpioPort = gpioPort_C_c,
        .gpioPin = 5,
        .pullSelect = pinPull_Up_c,
        .interruptSelect = pinInt_FallingEdge_c
    },
    {
        .gpioPort = gpioPort_C_c,
        .gpioPin = 4,
        .pullSelect = pinPull_Up_c,
        .interruptSelect = pinInt_FallingEdge_c
    }
};

/* Declare Output GPIO pins */
gpioOutputPinConfig_t ledPins[] = {
    {
        .gpioPort = gpioPort_B_c,
        .gpioPin = 0,
        .outputLogic = 1,
        .slewRate = pinSlewRate_Slow_c,
        .driveStrength = pinDriveStrength_Low_c
    },
    {
        .gpioPort = gpioPort_C_c,
        .gpioPin = 1,
        .outputLogic = 1,
        .slewRate = pinSlewRate_Slow_c,
        .driveStrength = pinDriveStrength_Low_c
    },
    {
        .gpioPort = gpioPort_A_c,
        .gpioPin = 19,
        .outputLogic = 1,
        .slewRate = pinSlewRate_Slow_c,
        .driveStrength = pinDriveStrength_Low_c
    },
    {
        .gpioPort = gpioPort_A_c,
        .gpioPin = 18,
        .outputLogic = 1,
        .slewRate = pinSlewRate_Slow_c,
        .driveStrength = pinDriveStrength_Low_c
    },
    {
        .gpioPort = gpioPort_C_c,
        .gpioPin = 18,
        .outputLogic = 1,
        .slewRate = pinSlewRate_Slow_c,
        .driveStrength = pinDriveStrength_High_c
    }
};   
当然也要注意下面的文件的时钟和IO口方向配置
Pin_mux.h Pin_mux.c 两文件初始化板子的PIN,BUTTON,LED,RGB,SPI,IC,UART的基本定义,如IO口的时钟允许和方向,PWM配置时钟和IO口,SPI,I2C,UART,配置时钟和IO口

drivers是所有驱动的集中,就是一些函数操作具体的CPU的硬件。具体使用时可以看看。
Framework框架包括各种操作 比如LED的具体操作,在LED。C,GPIO的具体操作在GPIO ,Keyboard的具体操作,DCDC,FLASH,存储保存NVM,SHELL实现等等。不过这里的shell.cnwk_ip中的shell_ip.c什么关系呢?后面细细理解等等。Source:
config.h:thread的基本配置:比如,要不要shell,能不能创建网络,打不打开thread协议栈,要不要coap观察 服务
freertosconfig.h
route_eligible_device_app.h
route_eligible_device_app..c

回复 支持 反对

使用道具 举报

1347

TA的帖子

2

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

测评达人

发表于 前天 09:22 | 显示全部楼层
强大的大米哥,coap看起来很好玩啊

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-7-22 02:51 , Processed in 0.252470 second(s), 15 queries , Redis On.

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