找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 15273|回复: 21

[CSR8系列] CSR8670 Rx Tx 是怎么传输数据的?

  [复制链接]
连续签到天数:4天
签到总天数:34天
签到总奖励:285金币
发表于 2014-12-2 14:37:34 | 显示全部楼层 |阅读模式
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:4天
签到总天数:34天
签到总奖励:285金币
 楼主| 发表于 2014-12-2 15:00:36 | 显示全部楼层
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:214天
签到总奖励:1390金币
发表于 2014-12-2 16:57:05 | 显示全部楼层
本帖最后由 xiayelianqu 于 2014-12-3 14:47 编辑

/****************************************************************
初始化串口任务函数
****************************************************************/
void PilAppUARTInit(void)
{
        int lSize = sizeof(Uart_TaskData) ;
        theSink.UART_Task = mallocPanic(lSize);
        memset(theSink.UART_Task, 0, lSize);
        theSink.UART_Task->uart_task.handler = uart_handler;
        MessageSinkTask(StreamUartSink(),&theSink.UART_Task->uart_task);        

        StreamUartConfigure(VM_UART_RATE_9K6 ,VM_UART_STOP_ONE,VM_UART_PARITY_NONE);
}


串口发送子函数
****************************************************************/
void uart_send(const char *data, uint16 lenth)
{   
           Sink uart = StreamUartSink();
        if (uart == 0)
        {
                /*SppTxData(uart_send_data_fail,strlen(uart_send_data_fail));*/
                return;
        }
        
           if(SinkClaim(uart, lenth) != 0xFFFF)
       {
               memcpy(SinkMap(uart), data, lenth);
               (void) PanicZero(SinkFlush(uart, lenth));
      }
        
}


/****************************************************************
串口任务处理函数
****************************************************************/
void uart_handler(Task task, MessageId id, Message message)
{
   switch(id)
   {
            case SEND_UART_DATA:    /*发送 */
                {
                        
                uart_send(u8SendBuf, 7);

                MessageCancelAll(task, SEND_UART_DATA);

                   }
        break;
               
        
        case MESSAGE_MORE_DATA: /*接收 类似中断*/
        {
                      Source source = StreamUartSource();
                      uint16 size = SourceSize(source);
                    uint8* data = (uint8*)SourceMap(source);
                    uint16 i;
                        
                    /*DEBUG(("uart received bytes: %d\r\n", size));*/
                   /* for(i = 0; i < size; i++) DEBUG(("%d\r\n", data));*/

                  SourceDrop(source, size);        
        }
        break;
               
             default:
                               break;
    }
}
另外;
有几处PSK和xide属性也需修改。

在xide平台属性将transport设置为RAW, 再用pstool配置波特、以及host inteface选择vm access to uart


/*********************************************************************************/
PilAppUARTInit放在主函数里就可以了,上电运行。
发送就直接调用uart_send函数,(也可以释放ID号 MessageSend(&theSink.UART_Task->uart_task,SEND_UART_DATA,0); )
收到数据自动进 case MESSAGE_MORE_DATA:

/***********************头文件*****************************************/
sink_private.h 文件hsTaskData结构体里面添加 Uart_TaskData          *UART_Task;

/* Sink application data */
typedef struct
{
    /* Main task */
    TaskData                 task;

    Uart_TaskData          *UART_Task; /*添加添加添加添加添加添加添加*/

   /* Config variables */
    ButtonsTaskData          *theButtonsTask;
   ...


/*至少包含如下头文件*/
#include "sink_private.h"
#include <panic.h>
#include <stddef.h>
#include <led.h>
#include <string.h>
#include <stream.h>
#include <message.h>

自定义头文件
typedef struct
{
        TaskData uart_task;
}
Uart_TaskData;

enum
{
        SEND_UART_DATA
};


积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 1 反对 0

使用道具 举报

连续签到天数:1天
签到总天数:881天
签到总奖励:11162金币
发表于 2014-12-3 11:34:34 | 显示全部楼层
不错不错,很给力的说明
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:4天
签到总天数:34天
签到总奖励:285金币
 楼主| 发表于 2014-12-3 13:07:26 | 显示全部楼层
xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
添加串口任务函数
*************** ...

首先谢谢你,我还想问一下这三个函数怎么用,设置好后直接调用这三个函数?包涵那些头文件呢?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:4天
签到总天数:34天
签到总奖励:285金币
 楼主| 发表于 2014-12-5 16:38:56 | 显示全部楼层
xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
初始化串口任务函数
************* ...

C:\Documents and Settings\Administrator\桌面
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:4天
签到总天数:34天
签到总奖励:285金币
 楼主| 发表于 2014-12-5 16:40:10 | 显示全部楼层
为什么我这边没有办法选择RAW??????是我弄错地方了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:4天
签到总天数:34天
签到总奖励:285金币
 楼主| 发表于 2014-12-8 10:03:18 | 显示全部楼层
xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
初始化串口任务函数
************* ...

麻烦问一下transport如果设置RAW,没有选项给设置!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:170天
签到总奖励:1053金币
发表于 2014-12-10 15:09:56 | 显示全部楼层
adk2.0上我没有调通,3.5上调试ok.打开编译环境xIDE for xxx,在打开你的工程项目,然后选择project->properties 在里面可以找到transport,设置RAW即可。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:13天
签到总奖励:69金币
发表于 2015-5-14 19:57:08 | 显示全部楼层
xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
初始化串口任务函数
************* ...

u8SendBuf,
这个变量是哪里定义的,编译报错
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-5-4 17:40 , Processed in 0.847724 second(s), 23 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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