|
關(guān)于使用WT588D-20SS芯片中出現(xiàn)的問題想咨詢各位前輩
我是用usb轉(zhuǎn)換器來將生成的bin文件寫入到外接flash中,參考數(shù)據(jù)手冊上的實例代碼和時序?qū)懲耆控制驅(qū)動,但是上電后WT588D并沒有任何反應(yīng),BUSY引腳毫無反應(yīng),對WT588復(fù)位后依然無效。請問是我的代碼出了問題還是哪里操作的不正確
本人代碼:
#include "wt588d.h"
#define CS_PIN GPIO_PIN_1
#define CS_PORT GPIOA
#define SCL_PIN GPIO_PIN_2
#define SCL_PORT GPIOA
#define SDA_PIN GPIO_PIN_3
#define SDA_PORT GPIOA
// 初始化GPIO
void WT588D_GPIO_Init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
// 配置CS/CLK/DAT為推挽輸出
gpio_init(CS_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,CS_PIN);
gpio_init(SCL_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,SCL_PIN);
gpio_init(SDA_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,SDA_PIN);
// 初始狀態(tài)
GPIO_BOP(CS_PORT) = CS_PIN; // CS高電平
GPIO_BOP(SCL_PORT) = SCL_PIN; // CLK高電平
GPIO_BOP(SDA_PORT) = SDA_PIN; // DAT高電平
}
// 發(fā)送8位命令
void WT588D_SendCommand(uint8_t cmd)
{
/* 可選復(fù)位 */
// GPIO_BC(WT588D_RST_PORT) = WT588D_RST_PIN; // RST拉低
// delay_ms(5); // 保持≥5ms
// GPIO_BOP(WT588D_RST_PORT) = WT588D_RST_PIN; // RST拉高
// delay_ms(20); // 等待>17ms
/* 喚醒芯片 */
GPIO_BC(CS_PORT) = CS_PIN; // CS拉低
delay_1ms(5); // 保持5ms喚醒
/* 發(fā)送8位數(shù)據(jù) (LSB first) */
for(uint8_t i = 0; i < 8; i++)
{
GPIO_BC(SCL_PORT) = SCL_PIN; // CLK拉低
// 設(shè)置數(shù)據(jù)位
if(cmd & 0x01)
{
GPIO_BOP(SDA_PORT) = SDA_PIN; // 輸出1
}
else
{
GPIO_BC(SDA_PORT) = SDA_PIN; // 輸出0
}
cmd >>= 1; // 準備下一位
delay_1us(188); // 數(shù)據(jù)穩(wěn)定時間 (150us)
GPIO_BOP(SCL_PORT) = SCL_PIN; // CLK上升沿鎖存
delay_1us(188); // 高電平保持 (總周期300us)
}
/* 結(jié)束傳輸 */
GPIO_BOP(CS_PORT) = CS_PIN; // CS拉高
// BUSY信號將在20ms后響應(yīng)
}
|
|