CC26xx GPIO如何模拟各种总线。

1.不要问我写这个,我们必须承认TI的接口做的很好,但是总有些垃圾传感器厂商自己的芯片的时序不是标准的。

所以写这个也是个无奈之举哦,我这边以简单的单总线为例。



step1:

如何设置输入,输出。

#define My_bus                     IOID_24   //gpio 数据端口定义

static PIN_Config PinsCfg[] =
{
    My_bus | PIN_GPIO_OUTPUT_DIS  | PIN_INPUT_EN  | PIN_PULLUP,
    PIN_TERMINATE
};

static void My_busInputInitial(void)//设置端口为输入
{
    //设置为输入
    PIN_setConfig(hPins, PIN_BM_OUTPUT_MODE | PIN_BM_INPUT_MODE, Board_My_bus | PIN_GPIO_OUTPUT_DIS  | PIN_INPUT_EN  | PIN_PULLUP);
}

static void  My_busOutputInitial(void)//设置端口为输出
{
    //设置为输出
    PIN_setConfig(hPins, PIN_BM_OUTPUT_MODE | PIN_BM_INPUT_MODE, Board_My_bus | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX);
}

step2:

输出设置为1 ,设置为0 ,以及输入状态的读取状态。

  My_busOutputInitial();
  PIN_setOutputValue(hPins, Board_My_bus,  1);//My_busIO = 1;
  My_busOutputInitial();
  PIN_setOutputValue(hPins, Board_My_bus,  0);//My_busIO = 0;

  My_busInputInitial();//设置IO输入
  value=PIN_getInputValue(Board_My_bus)


step3:

延时函数:也就是做时序的时候用的哦. PS:这个准不准很重要,和你的系统时钟初始化有关,建议用示波器抓一个io的反转时序调节精准度。

static void My_busDelay_1us(unsigned int k)
{
    while(k--)
    {
        CPUdelay(10);//1us
    }
}

static void My_busDelay(unsigned int k)
{
    My_busDelay_1us(k);
}


step4:

头文件:

#include <string.h>
#include <stdio.h>

#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Queue.h>


#include "Board.h"


step5:

结语部分,会了这些就和8051没区别了,各位大佬们应该也就会了吧。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值