CC3000作为是一种简单集成,简单实用的无线宽带设备,她集成了完整的802.11协议栈,802.11个人安全请求;IP网络协议栈,CC3000主机驱动对CC3000硬件访问时很轻松的。CC3000逐句驱动的关键使用是:

很容易的配置并调节主机驱动内容,满足客户要求的功能;

可阅读性:完整的代码文档

简单性:极小的开发平台,和系统独立

系统结构层次图

驱动包含了两个部分:

  • CC3000用户应用编程接口API
  • 传输层API

用户API被组成四个类,反应了四个不同的实体他们是

  • WLAN API ,她配合基础层,提供802.11协议
  • 网络堆栈API,配合嵌入式网络堆栈
  • 嵌入式网络应用API,配合嵌入式网络应用传递,作为编内内容的补充,这些包括一些基础网络协议应用
  • 不可变的存储器API,他用着配置CC3000设备的EEPROM

API功能的调用,要通过设备的应用层触发激活,

事件是设备触发行为导致了主机处理的中断,量类事件被CC3000设备产生:

  • 命令应答事件
  • 无请求事件

命令应答事件:

命令被发送到设备节点,并被完成或者长周期处理被触发,命令应答事件产生,

无应答事件:

通过触发方式,系统提供了无应答事件,这些事件同时产生,指示系统事件的发生,下面的图表显示了基础事件的次序:

下面列出了CC3000设备产生的所有同步事件:

HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE :告知第一次配置处理完成

HCI_EVNT_WLAN_KEEPALIVE:在CC3000和主机MCU之间定期的激活

HCI_EVNT_WLAN_UNSOL_CONNECT – WLAN:连接

HCI_EVNT_WLAN_UNSOL_DISCONNECT 告知CC3000设备从访问点断开

HCI_EVNT_WLAN_UNSOL_DHCP:动态主机配置协议告知

HCI_EVNT_WLAN_UNSOL_INIT:告知CC3000设备完成初始化处理

HCI_EVNT_WLAN_ASYNC_PING_REPORT:ping结果告知

CC3000 API 续(EEPRAM设置和TCP/UDP)

CC3000 NVMEM API

CC3000设备用EEPROM去存储射频标准参数,网络配置参数和补充,多数存储位置不直接通过CC3000主机写驱动,而是间接通过API调用触发固化的存储值

EEPROM 结构图:

  1. 标识0,1,3,7,9;CC3000产生区,这部分由CC3000自我产生
  2. 偏移2,6,8,11 客户配置区:通过客户配置
  3. 4,5,10 TI 服务打包区:编程用API帮助

EEPROM数据包含几个文件,可直接或间接访问,直接访问在写EEPROM的结尾直接触发CC300主机;间接访问触发CC3000 NVMEM API 间接地写到EEPROM ;每一个文件有独立的ID,下面的文件可悲修改被客户通过触发相符合的API

  1. NVMEM_WLAN_CONFIG_FILEID 添加或移除WLAN 只在执照
  2. NVMEM_IP_CONFIG_FILEID 通过IP 配置API去配置IP

CC3000 WLAN API

CC3000 APIs 提供了一种连接处理的应用方式,修改WLAN的策略,执行扫描对WLAN 模拟放大,下面的基础操作是基于CC3000设备的WLAN。

  1. 第一次配置:要求配置CC3000设备,连接功放,
  2. WLAN连接创建和断开
  3. WLAN外形定义和策略定义
  4. WLAN扫描配置和读WLAN扫描
    • 创建外形和策略

WLAN 策略定义了三个选择可能去连接CC3000设备的AP

  1. 自动连接被打开,CC3000设备尝试连接任何AP,通过扫描,选择这种连接方式用wlan_ioctl_set_connection_policy(1,0,0)
  2. 快速连接设置:CC3000设备尝试自动重新连接到上一个AP,直到连接失败或自动重启。选择这种连接方式调用wlan_ioctl_set_connection_policy(0,1,0)
  3. 用户外部设置:CC3000设备尝试连接从外设,选择这种连接方式调用wlan_ioctl_set_connection_policy(0,0,1)
  4. 创建WLAN 连接

下面的方式可以被创建连接使用

  1. 第一次配置CC3000设备特征,这是一个简单的方式,
  2. 直接连接到一个给定的AP
  3. 用WLAN策略和外设定义那个AP连接,直接创建连接,让CC3000设备扫描选择AP
  4. 第一次配置

第一次被指WLAN当最终的产品还没有输入输出能力时,第一次配置提供了一种方法穿件一个外形,这些都存储在CC3000的EEPROM中,下面的图表显示的基本的流程操作,对第一次配置

CC3000套接字API

套接层API 创建TCP/IP连接,所有的套接字层APIS被自然的包装,套接字层APIS是相同和标准的BSD层APIS

  • 数据传输和接收发送和接收用TCP套接字:

    1. 数据传输:数据传输发生通过套接字层接口用标准的命令,Send,Sendto是BSDAPI的一部分,选择用哪个命令依据套接字类型;TCP用Send命令,UDP用Sendto

连接被建立后,发送和接收通过TCP套接字,BSD API Send和Rec命令使用TCP套接字,Sendto和RecvfromAPI命令使用UDP套接字

  • UDP 套接字API

客户端UDP 套接字连接:客户端UDP连接只要求创建套接字

  • 服务器UDP 套接字连接

运行UDP服务器要求在创建套接字之前执行bind 操作,Sendto和Recvfrom API命令用着去发送和接收数据

CC3000 主机驱动API介绍的更多相关文章

  1. python 全栈开发,Day95(RESTful API介绍,基于Django实现RESTful API,DRF 序列化)

    昨日内容回顾 1. rest framework serializer(序列化)的简单使用 QuerySet([ obj, obj, obj]) --> JSON格式数据 0. 安装和导入: p ...

  2. Selenium API 介绍

    Selenium API 介绍 我们先前学习过元素定位,大家不知道学习得怎么样了,当你学会元素定位之后就能够跟着我的脚步学习本节Selenium 经常使用的API 介绍 Seleium 为什么能模拟人 ...

  3. 常用ArcGIS for Silverlight 开发API介绍

    1.API介绍 2.Map对象  3.Layer对象 4.Symbol对象 5.Task对象

  4. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  5. python学习笔记(win32print API介绍)

    最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...

  6. 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍

    一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...

  7. Commons-lang API介绍

    4.1 Commons-lang API介绍 4.1.1 StringUtils 4.1.2 StringEscapeUtils 4.1.3 ArrayUtils 4.1.4 DateUtils 4. ...

  8. APP自动化框架LazyAndroid使用手册(3)--核心API介绍

    作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...

  9. linux驱动简单介绍

     linux驱动简单介绍 驱动基本介绍 驱动.顾名思义就是“驱使硬件设备行动”.设备驱动与底层硬件之间打交道,按照硬件设备的具体操作方式来读写设备寄存器,最终完成一系列操作. 设备 驱动充当了应用程序 ...

随机推荐

  1. lamp centos虚拟主机配置

    1.基于不同端口的虚拟主机配置 [root@lamp~]# vi /etc/httpd/conf/httpd.conf Listen 80      #设置监听不同的虚拟主机需要使用的端口 Liste ...

  2. 使用Eclipse创建maven项目

    前提:Eclipse中安装了maven插件,或者Eclipse版本在Mars以上(自集成maven) 1.new project --maven project 2.默认点击next 3.选择构建类型 ...

  3. 运行js提示库没有注册错误8002801d的解决办法

    运行js提示库没有注册错误8002801d的解决办法这个错误主要是因为服务器上的windows scripts版本较低,请按下面的链接下载较高版本windows scripts 5.6并在服务器上进行 ...

  4. i.BIO方式的SSL通道流程

    前面已经讲解了BIO通道的整体流程,对于SSL的流程是插在通道中的,在BIO通道的初始化的时候,根据Connector配置的SSLEnabled属性进行SSL的逻辑. 主要集中的位置在JIOEndpo ...

  5. angular中的代码执行顺序和$scope.$digest();

    angular中,在一个controller里$scope.whatever=function(){...} ,这样写只是在这个scope作用域里定义了一个函数,如果要执行的话还得在这个control ...

  6. 超级迷宫 nabc

    特点之一:益智模式 N  我们的游戏需要一点点益智答题使其精彩 A 在走迷宫的过程中,会遇到某一个点,出现一个益智小问题,答对即可通过 B 增加游戏的趣味性,吸引用户 C 答题游戏不少,前不久腾讯的手 ...

  7. 《Java虚拟机并发编程》学习笔记

    对<Java虚拟机并发编程>这本书真的是相见恨晚.以前对并发编程只是懂个皮毛,这本书让我对并发编程有了一个全新的认识.所以把书上的知识点做下笔记,以便以后复习使用. 并发与并行 仔细说来, ...

  8. ring0

    Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3.Windows只使用其中的两个级别RING0和RING3. RING0层拥有最 ...

  9. 【转】XGBoost参数调优完全指南(附Python代码)

    xgboost入门非常经典的材料,虽然读起来比较吃力,但是会有很大的帮助: 英文原文链接:https://www.analyticsvidhya.com/blog/2016/03/complete-g ...

  10. display 和 visibility 的区别

    设置控件隐藏 1.display:none  不为元素保留位置 2.visibility:hidden  占位置,是对象在网页上看不到,所占空间没有变化