找回密码
 立即注册

微信扫码登录

楼主: we_5548892101

[BLE Mesh] 泰凌微TLSR8359

[复制链接]

5

主题

302

回帖

1021

积分

版主

积分
1021
发表于 2025-4-18 10:25:44 | 显示全部楼层 来自 广东深圳
handbook开头有介绍,不支持这款芯片

1

主题

4

回帖

51

积分

不屈白银

积分
51
 楼主| 发表于 2025-9-16 23:41:30 | 显示全部楼层 来自 河北保定
#include "../../drivers.h"
#include "../../genfsk_ll/genfsk_ll.h"




#define    RX_BUF_LEN                     64
#define    RX_BUF_NUM                     4
volatile static unsigned char rx_buf[RX_BUF_LEN*RX_BUF_NUM] __attribute__ ((aligned (4))) = {};
volatile static unsigned char rx_ptr = 0;
volatile static unsigned char rx_flag = 0;
static unsigned char *rx_packet = 0;
static unsigned char rx_payload_len = 0;
volatile static unsigned char *rx_payload = 0;
volatile static unsigned char rssi = 0;
volatile static unsigned int rx_timestamp = 0;

volatile static unsigned int rx_test_cnt = 0;

_attribute_ram_code_ __attribute__((optimize("-Os")))void irq_handler (void)
{
    unsigned int irq_src = irq_get_src();
    unsigned short rf_irq_src = rf_irq_src_get();

    if (irq_src & FLD_IRQ_ZB_RT_EN) {//if rf irq occurs
        if (rf_irq_src & FLD_RF_IRQ_RX) {//if rf rx irq occurs
            rx_test_cnt++;
            rx_packet = rx_buf + rx_ptr*RX_BUF_LEN;

            //set to next rx_buf
            rx_ptr = (rx_ptr + 1) % RX_BUF_NUM;
            gen_fsk_rx_buffer_set((unsigned char *)(rx_buf + rx_ptr*RX_BUF_LEN), RX_BUF_LEN);
           // rx_flag=1;
          //  if (gen_fsk_is_rx_crc_ok(rx_packet)) {
            if(RX_BUF_LEN>17){
                rx_flag = 1;
            }
        }
        rf_irq_clr_src(FLD_RF_IRQ_ALL);
    }
    irq_clr_src2(FLD_IRQ_ALL);
}





int main(void)
{
        unsigned char sync_word[5] = {0x34, 0x43, 0x10, 0x10, 0X01};


        cpu_wakeup_init();

    clock_init(SYS_CLK_24M_Crystal);



    //generic FSK Link Layer configuratioin
    gen_fsk_datarate_set(GEN_FSK_DATARATE_250KBPS); //Note that this API must be invoked first before all other APIs
    gen_fsk_preamble_len_set(1);//设置前导码长度为5字节
    gen_fsk_sync_word_len_set(SYNC_WORD_LEN_5BYTE);//设置同步字长度为5字节
    gen_fsk_sync_word_set(GEN_FSK_PIPE0, sync_word); //set pipe0's sync word为管道0设置具体的同步字内容
    gen_fsk_pipe_open(GEN_FSK_PIPE0); //enable pipe0's reception启用管道0的接收功能
    gen_fsk_tx_pipe_set(GEN_FSK_PIPE0); //set pipe0 as the TX pipe设置管道0作为发送管道
    gen_fsk_packet_format_set(GEN_FSK_PACKET_FORMAT_VARIABLE_PAYLOAD,0);//设置数据包格式为固定负载长度,并指定负载长度为8字节
    gen_fsk_radio_power_set(GEN_FSK_RADIO_POWER_10DBM);
    gen_fsk_rx_buffer_set(rx_buf + rx_ptr*RX_BUF_LEN, RX_BUF_LEN); //接收缓冲区设置
    gen_fsk_channel_set(7); //set rf freq as 2403.5MHz10. 信道设置
    gen_fsk_radio_state_set(GEN_FSK_STATE_RX); //set transceiver to basic RX state//射频状态设置
    gen_fsk_rx_settle_set(89);//12. 接收稳定时间设置
    WaitUs(90); //wait for rx settle

    //irq configuration
    rf_irq_enable(FLD_RF_IRQ_RX); //enable rf tx irq
    irq_enable_type(FLD_IRQ_ZB_RT_EN); //enable RF irq
    irq_enable(); //enable general irq

    printf("star\r\n");
    WaitMs(10);
    printf("star\r\n");
    WaitMs(10);
    rx_flag=1;
    while (1) {
        if (rx_flag) {
            rx_flag = 0;
            rx_payload = gen_fsk_rx_payload_get(rx_packet, &rx_payload_len);
            rssi = (gen_fsk_rx_packet_rssi_get(rx_packet) + 110);
            rx_timestamp = gen_fsk_rx_timestamp_get(rx_packet);






            printf("Received %d bytes: ", rx_payload_len);
            for(int i = 0; i < rx_payload_len; i++) {
                printf("%02X ", rx_payload[i]);
            }

            printf("rx_timestamp=%d",rx_test_cnt);
            printf("\n");










         //   log_msg(0, rx_payload, rx_payload_len);
           // log_msg(0, &rssi, 1);
           // log_msg(0, &rx_timestamp, 4);


            // 模拟 log_msg(0, rx_payload, rx_payload_len)
           // for(int i = 0; i < rx_payload_len; i++) {
            //    printf("%c", rx_payload[i]); // 直接输出原始字节
          //  }

            // 模拟 log_msg(0, &rssi, 1)
        //    printf("%d", rssi);

            // 模拟 log_msg(0, &rx_timestamp, 4)
            // 注意字节序问题:通常是小端格式




        }
    }
}








能收到个数也对但是不管我发送什么都收到的是20 2A 这是什么原因呢

5

主题

302

回帖

1021

积分

版主

积分
1021
发表于 2025-9-19 09:42:08 | 显示全部楼层 来自 广东深圳
可以去 sig mesh handbook 查看是否支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-10-12 17:51 , Processed in 0.086531 second(s), 19 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

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