单片机解密GPIO模拟驱动W25Q16 FLASH
程序代码应用到产品,非常稳定
单片机解密源程序如下:
- #include "_cpus.h"
- #include "_coms.h"
- /*=====================================================================================================================*/
- //SPI模式:CPOL=1 CPHA=1 CS Active low
- //clock is high when inactive
- //Data is valid on clock trailing edge
- //不活动时,时钟为高 也就是数据可改变区
- //数据在时钟后沿有效 数据作用点
- #define ENTER_CRITICAL()
-
- #define EXIT_CRITICAL()
-
- #define MOSI PC6
- #define SPSCK PC7
- #define ADD_EN_WP PC8
- #define MISO PC9
- #define SS PC10
-
- #define SS_OUT_L b_hGpioOut(SS,0)
- #define SS_OUT_H b_hGpioOut(SS,1)
-
- #define WP_OUT_L b_hGpioOut(ADD_EN_WP,0)
- #define WP_OUT_H b_hGpioOut(ADD_EN_WP,1)
- #define SPI_CLK b_hGpioOut(SPSCK,0);b_dNOP();b_dNOP();b_dNOP();b_dNOP();b_dNOP();b_hGpioOut(SPSCK,1);//和EE相位相反
- #define Flash_CS_0 b_hGpioOut(SPSCK,1); ENTER_CRITICAL();WP_OUT_H;SS_OUT_L;
- #define Flash_CS_1 WP_OUT_L;SS_OUT_H;EXIT_CRITICAL(); b_hGpioOut(SPSCK,0);
-
-
- void b_hExFlashSetChip2NomlPower(void);
- extern void b_hExFlashInit(void)
- {
- b_hGpioInit(SS,eOUT_PUSH_PULL,1);
- b_hGpioInit(SPSCK,eOUT_PUSH_PULL,0);
- b_hGpioInit(MOSI,eOUT_PUSH_PULL,0);
- b_hGpioInit(MISO,eOUT_PUSH_PULL,0);
-
- b_hGpioInit(ADD_EN_WP,eOUT_PUSH_PULL,0);
- b_hExFlashSetChip2NomlPower();
- }