【Iepen boarne】 Multifunksjonele IoT-ûntwikkelingskit basearre op T5L-chip

Yn dizze útjefte yntrodusearje wy it priiswinnende iepen-boarne gefal fan DWIN Developer Forum - Multi-funksjonele IoT-ûntwikkelingskit basearre op T5L-chip. Yngenieurs brûke folslein de rike perifeare funksjes fan 'e T5L1-chip, yntegreare USB, audio-sprekkers, PWM-sinjaal-ynterface, RGB-kleurljochten, Wi-Fi-modules, DC-motoren en oare ynterfaces, foar it fjild fan Internet of Things-learlingen, testers en ûntwikkelders om biede in fleksibel en effisjint ûntwikkelingsplatfoarm foar Internet of Things, dat sterk foldocht oan 'e diversifisearre behoeften fan 'e brûker yn termen fan hardware-boarnen, en helpt de mearderheid fan ûntwikkelders om de ferkenningsreis fan Internet of Things maklik te begjinnen.

PCB Perifeare ynterface

11

UI ûntwerp

530 32 36

GUI ûntwerp

13

C51 Design

(1) De kearnkoade foar JPG-ôfbyldings dy't op it skerm werjûn wurde is as folget:

void sys_draw_jpg(u16 vp,u8 *jpg_data,u32 data_len)

{

u32 ik;

foar(i=0;i

{

if((jpg_data==0xFF)&&(jpg_data[i+1]==0xD8))

brekke;

}

if(i==data_len)

weromkomme;

data_len = (data_len-i)/2+1;

sys_write_vp(vp+2,jpg_data+i,data_len);

data_len |= 0x5AA50000;

sys_write_vp(vp,(u8*)&data_len,2);

}

 

(2) It programma yn ferbân mei RGB strip werjefte is as folget:

void rgbled_send_zero()

{

u8 ik;

RGBLED_SDA = 0;

foar(i=0;i

{

RGBLED_SCL = 0;

sys_delay_about_us(200);

RGBLED_SCL = 1;

sys_delay_about_us(200);

}

}

u8 rgbled_reverse_data(u8 dat)

{

dat = ((~dat) & 0xC0) >> 6;

werom dat;

}

void rgbled_send_data(u32 dat)

{

u8 ik;

foar(i=0;i

{

as (dat&0×80000000)

RGBLED_SDA = 1;

oars

RGBLED_SDA = 0;

dat

RGBLED_SCL = 0;

sys_delay_about_us(200);

RGBLED_SCL = 1;

sys_delay_about_us(200);

}

}

// gegevens ferwurking

void rgbled_process(u8 r, u8 g, u8 b)

{

u32 dat = 0;

dat |= (u32)0×03

dat |= (u32)rgbled_reverse_data(b)

dat |= (u32)rgbled_reverse_data(g)

dat |= (u32)rgbled_reverse_data(r)

dat |= (u32)b

dat |= (u32)g

dat |= r;

rgbled_send_data(dat);

}

void rgbled_show(u8 r, u8 g, u8 b)

{

P2MDOUT |= 0x0C;

rgbled_send_zero();

rgbled_process(r, g, b);

rgbled_process(r, g, b);

}

void rgbled_init (void)

{

rgbled_show(0,0,0);

}

 

(3) De iic protokol stjoerprogramma koade is as folget.

#include "iic.h"

sbit IIC_SDA_PIN = P2^2;

sbit IIC_SCL_PIN = P2^3;

#define SDA_IN() P2MDOUT&=0xFB

#define SDA_OUT() P2MDOUT|=0×04

#define IIC_SCL IIC_SCL_PIN

#define IIC_SDA IIC_SDA_PIN

#define READ_SDA IIC_SDA_PIN

#define delay_us sys_delay_about_us

void IIC_Init (void)

{

P2MDOUT |= 0x0C;

IIC_SDA = 1;

IIC_SCL = 1;

}

void IIC_Start(void)

{

SDA_OUT();

IIC_SDA=1;

IIC_SCL=1;

delay_us(4);

IIC_SDA=0;

delay_us(4);

IIC_SCL=0;

}

void IIC_Stop(void)

{

SDA_OUT();

IIC_SCL=0;

IIC_SDA=0;

delay_us(4);

IIC_SCL=1;

delay_us(4);

IIC_SDA=1;

}

u8 IIC_Wait_Ack(void)

{

u8 ucErrTime=0;

SDA_IN();

IIC_SDA=1;delay_us(1);

IIC_SCL=1;delay_us(1);

wylst (READ_SDA)

{

ucErrTime++;

if(ucErrTime>250)

{

IIC_Stop();

werom 1;

}

}

IIC_SCL=0;

werom 0;

}

void IIC_Ack (void)

{

IIC_SCL=0;

SDA_OUT();

IIC_SDA=0;

delay_us(2);

IIC_SCL=1;

delay_us(2);

IIC_SCL=0;

}

void IIC_NAck (void)

{

IIC_SCL=0;

SDA_OUT();

IIC_SDA=1;

delay_us(2);

IIC_SCL=1;

delay_us(2);

IIC_SCL=0;

}

void IIC_Send_Byte(u8 txd)

{

u8 t;

SDA_OUT();

IIC_SCL=0;

foar(t=0;t

{

IIC_SDA=(txd&0×80)>>7;

txt

delay_us(2);

IIC_SCL=1;

delay_us(2);

IIC_SCL=0;

delay_us(2);

}

}

u8 IIC_Read_Byte(u8 ack)

{

u8 ik, ûntfange=0;

SDA_IN();

foar(i=0;i

{

IIC_SCL=0;

delay_us(2);

IIC_SCL=1;

ûntfange

if (READ_SDA) ûntfange++;

delay_us(1);

}

as (!ack)

IIC_NAck();

oars

IIC_Ack();

werom ûntfange;

}

 

 


Post tiid: Jun-19-2024