|
|
使用下面的例子代码,不能使SIMO和CS为低电平:( x8 Q5 y# J" q3 I% y# I+ {
void PSCInit(void)
; l7 q0 q( |$ F1 H{
9 i/ y, O! J6 b6 i PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 ~0 h* y; f) q# F}
3 m% u" Z" c4 j) G% F, x$ |
( g, Q$ a4 b1 d2 X" [7 bvoid GPIOBankPinMuxSet(void)
1 \0 }- R+ o6 ^/ F, z& G{/ L1 Q$ q: }2 L$ H& y& u
// DRDY ------------ GPIO6[14] -- 111' u8 ?( l" C6 B" e; t* R* y
// SPI1_CLK ------------ GPIO2[13] -- 46, `) `, o6 J6 w) }+ E
// SPI1_SOMI------------ GPIO2[11] -- 44$ m& ]0 @# ?" h0 n% h* t8 g
// SPI1_SIMO------------ GPIO2[10] -- 43
2 A6 K$ M7 ^- I, p7 n+ j // SPI1_CS2 ------------ GPIO1[0] -- 17
/ b/ f+ j# [& E. \ // SPI1_CS3 ------------ GPIO1[1] -- 18: H1 [3 |8 @! @& d2 _
% b% k1 w7 V! {; [( B7 Q2 E# e2 S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; l' h R3 R8 W9 ~3 M! m0 A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
, D1 }/ s1 F1 `$ s( t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);* g) C c5 y* v/ W9 r6 T
* Q3 {6 A/ Q$ e4 A //DRDY/ ~; ^! W, z/ G" k5 s4 P5 L8 N
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" ~- E+ T' B% `+ z- K) R z6 ]/ m
// CS2,CS3& M- B3 t4 I! Y. A5 [
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
- o. S1 a4 T- q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3. m/ S }3 P+ E! `; ^" @
//SIMO% V' j& m4 _+ J' W$ J+ m, Q4 G6 f
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! Y& |% s! g7 n8 Y$ J' K
//SOMI7 b: z# P% ~! |3 q
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, R: R+ y0 C4 d A5 b2 Z
//CLK% U. T3 {5 O! M" o) B6 Z; Z) N
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) S9 `) e d5 L, U1 N3 Z. J0 w- U A3 b
3 R6 f9 R, s: Z7 A* F: k- c/ g/ o( b // LDAC
( A( t7 W S* S/ Z0 B& u1 y* @) z GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
" o$ K8 {0 J ^( W2 _- Z: Y, z. ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 {0 G _" ^+ G; e9 a3 E- N5 c7 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# {/ s, v7 P# H' ?/ P" s% a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 t6 m2 c0 E! O/ a: ` GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 X8 `; D; \3 u) p}
5 G) p/ i* U4 Z
$ q0 c9 V5 r( X K9 F$ }int main(void)( ~& y- a* ]8 {4 S4 P
{
' I. |5 n/ }1 | // 外设使能
3 S# T3 [0 U U5 M PSCInit();; O$ W* b+ P- e$ H
7 I" p& X, }" e+ \
) ~3 ?5 b7 |" D' O // 管脚复用配置& Y5 R/ U$ l0 |; J: S- Q) G
GPIOBankPinMuxSet();
- y2 d) P2 t' Q; @' u! f for(;;)* J2 @) ?3 s0 n- W3 a# }# ^
{0 @& K, T4 v$ [' s$ R v% }
SET_SCLK();//时钟正常输出
8 }; X- U6 O1 @# }( r: Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 o6 @* q. x X, B% \ p6 y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- e8 M) e( ~+ \, i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- I3 p3 k5 K# L$ Z- f: N/ q3 ~ e
, w) g$ O6 o& j# t$ s. S
delay(20);
* e7 D `8 b5 y' U) A CLR_SCLK();
- X7 C, F( F N5 A3 A( S/ {; z/ p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
# M0 M: A8 i1 s* |8 U! u# S3 A/ O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" t7 ]2 m# y3 {: }8 H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 S4 q( S7 t1 e' ` delay(20);) S2 c- ~; k/ P2 F. R/ r+ L7 o
}/ k* B# y2 ]5 m" F4 F
}
) S) Z! S0 [9 X+ B |
|