GD32307E-START IO模拟SPI控制RGBLED(03)
<p>续上一篇https://bbs.eeworld.com.cn/thread-1143118-1-1.html</p><p>今天我们来做一个利用GD32307E-START IO模拟SPI控制RGBLED实验</p>
<p>1.RGBLED控制芯片为P9813</p>
<p>接线图如</p>
<p>参考P9813 datasheet我们知道需要一个时钟信号和一个数据信号才能使其工作</p>
<p>完成以上剩下就是code实战</p>
<p>1.整合3个三原色数据到一个变量</p>
<p>void RGBLED_DataDealWithAndSend(uint8_t r,uint8_t g,uint8_t b)<br />
{<br />
uint32_t dx=0;<br />
dx |= (uint32_t)0x03 << 30; //前两位'1'位标志位<br />
dx |= (uint32_t)RGBLED_TakeAntiCode(b) << 28;<br />
dx |= (uint32_t)RGBLED_TakeAntiCode(g) << 26;<br />
dx |= (uint32_t)RGBLED_TakeAntiCode(r) << 24;<br />
dx |= (uint32_t)b << 16;<br />
dx |= (uint32_t)g << 8;<br />
dx |= r;<br />
RGBLED_DatSend(dx);//发送数据<br />
}</p>
<p>2. MCU发送数据到芯片</p>
<p>void RGBLED_DatSend(uint32_t dx)<br />
{<br />
uint8_t i;<br />
for(i=0;i<32;i++)<br />
{<br />
if((dx & 0x80000000) !=0)<br />
RGBLED_SDA_H();<br />
else <br />
RGBLED_SDA_L();<br />
dx<<=1;<br />
RGBLED_SCL_L();//delay_us(200);<br />
RGBLED_SCL_H();///delay_us(200);<br />
} <br />
}</p>
<p>3.最终的控制函数</p>
<p>void RGBLED_Show(uint8_t r,uint8_t g,uint8_t b)<br />
{<br />
RGBLED_Send32Zero();//发送前32位'0'起始帧<br />
RGBLED_DataDealWithAndSend(r, g, b);//发送第一个32bit灰度数据<br />
RGBLED_DataDealWithAndSend(r, g, b);//发送第二个32bit灰度数据<br />
}</p>
<p>4.IO初始化</p>
<p>#define RGBLED_SCL_H() GPIO_BOP(GPIOC) = GPIO_PIN_8<br />
#define RGBLED_SCL_L() GPIO_BC(GPIOC) = GPIO_PIN_8<br />
#define RGBLED_SDA_H() GPIO_BOP(GPIOC) = GPIO_PIN_7<br />
#define RGBLED_SDA_L() GPIO_BC(GPIOC) = GPIO_PIN_7</p>
<p>#define RGBLED_SDA_O() {gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);}<br />
#define RGBLED_SCL_O() {gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);}<br />
#define RGBLED_SDA_I() {gpio_init(GPIOC, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_7);}<br />
以上完成直接编译donwload至实验板测试验证</p>
<p></p>
<p>实验验证测试结束,期待下一篇IIC OLED SHOW</p>
<p>为啥要模拟?</p>
<p><a href="https://bbs.eeworld.com.cn/thread-1143008-1-1.html" target="_blank">兆易GD32307E-START测评汇总</a></p>
<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1143008-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1143008-1-1.html</a></p>
页:
[1]