JSong 发表于 2014-12-2 14:37:34

CSR8670 Rx Tx 是怎么传输数据的?

哪位哥哥那边有CSR8670串口相关的材料啊!?麻烦能发我一份吗!?万分感谢!

JSong 发表于 2014-12-2 15:00:36

:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)

xiayelianqu 发表于 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
};


co9 发表于 2014-12-3 11:34:34

不错不错,很给力的说明

JSong 发表于 2014-12-3 13:07:26

xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
添加串口任务函数
*************** ...

首先谢谢你,我还想问一下这三个函数怎么用,设置好后直接调用这三个函数?包涵那些头文件呢?

JSong 发表于 2014-12-5 16:38:56

xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
初始化串口任务函数
************* ...

C:\Documents and Settings\Administrator\桌面

JSong 发表于 2014-12-5 16:40:10

为什么我这边没有办法选择RAW??????是我弄错地方了?

JSong 发表于 2014-12-8 10:03:18

xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
初始化串口任务函数
************* ...

麻烦问一下transport如果设置RAW,没有选项给设置!

zjy3411 发表于 2014-12-10 15:09:56

adk2.0上我没有调通,3.5上调试ok.打开编译环境xIDE for xxx,在打开你的工程项目,然后选择project->properties 在里面可以找到transport,设置RAW即可。

frank_riber 发表于 2015-5-14 19:57:08

xiayelianqu 发表于 2014-12-2 16:57
/****************************************************************
初始化串口任务函数
************* ...

u8SendBuf,
这个变量是哪里定义的,编译报错
页: [1] 2 3
查看完整版本: CSR8670 Rx Tx 是怎么传输数据的?