|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: Q/ t5 K1 c$ Z5 k1 yvoid PSCInit(void)+ \$ E" `: m, s4 T1 S! L
{% L! |' U/ M H4 F( V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ K& v5 _+ G- n4 U5 `
}, d) D8 Q8 M* ?. `0 s
8 Y W% R5 m# A# @. p+ Jvoid GPIOBankPinMuxSet(void)' ^" w$ x T* ~# t
{
! \& I8 f3 Q! ?5 C2 _ // DRDY ------------ GPIO6[14] -- 111. T. S) z+ a, J3 ?: a
// SPI1_CLK ------------ GPIO2[13] -- 46
& t% j/ u4 V5 j$ d# N9 S // SPI1_SOMI------------ GPIO2[11] -- 44
4 g5 @: k3 D$ l. @ e q // SPI1_SIMO------------ GPIO2[10] -- 430 m. X9 V# W6 j7 z
// SPI1_CS2 ------------ GPIO1[0] -- 17& B! e9 n& h7 [ y, T
// SPI1_CS3 ------------ GPIO1[1] -- 18
, Z) P' z1 Y) v
* S* o! A% ?5 G; z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 N$ a3 R% u' B& Z% G- N, n1 b3 z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
1 [( H, ~7 n6 x d7 C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
# Q4 v3 p+ q( Y/ b) l' @$ } ^5 e: E$ A2 y0 M/ `# s. R0 ^, w) w
//DRDY
# G; ^0 C) I7 V4 ~+ E0 D& i GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY3 e2 W4 z" O- Y- f6 W Q# R
// CS2,CS3
; t2 E1 g7 i3 E, Z, t, F- r# O8 ^3 h GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" K( M, e1 t* B- V6 ^0 d$ e' r
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 K. @& U# l( U; ` //SIMO
; o7 W, ?0 a9 H1 K: i$ s7 I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO0 B$ v4 {! z) K' v( V
//SOMI) L. V, u, t) P; V% o
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ H( ]! H m. G& C //CLK
$ m7 J4 T5 y& R0 ` GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 I6 m5 P, R# x/ c. W) Q) `1 r
. ~7 q( }. B; b$ V. h // LDAC/ v, z8 D: c" Q: P1 V' D/ I3 Q5 u
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 S/ g; Y H9 S) ]) D( P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ m& |+ J, O1 [, j4 }' U2 S9 p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% z0 d, j6 [6 L0 o' |
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" Z9 A2 i% x" z GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( r* T( I& A/ l& {( o3 Q, I! r, _# {
}
: m8 a$ k' ], y* E% c' b
" v" B8 [/ D' A9 m( ~* m* C8 h6 bint main(void)" R" R# N; x: s4 x. U+ q. F; ?
{' G- ~* A: ?$ Y/ W$ S+ `) e
// 外设使能& [5 z; t+ I9 M6 {# c
PSCInit();
3 p- ]$ w9 Y D5 p7 v0 }% W6 C5 q7 ~4 @$ {
, p7 y0 r( `; e& g3 R+ s7 U$ X3 C4 `
// 管脚复用配置. _2 Z2 s+ q3 t
GPIOBankPinMuxSet();
: Z, `3 g5 J* G0 D for(;;)7 Q; h3 I! T$ j2 x& i0 }: P% L7 p# ~6 `) k
{* W4 i5 q3 ?0 `# N& |
SET_SCLK();//时钟正常输出1 V" `5 W/ H! L& W* \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 v' e! @$ y# k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3# y( }4 ?5 O) Y0 s, ?# |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 V, x6 }, l. a o' T
# E2 ^8 q1 ]% s9 C: S: m* Q delay(20);" c, y/ m1 O, h+ f1 u9 n
CLR_SCLK();( p1 H& ?; o3 R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS37 z6 A3 Q7 S4 C; b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ Z Y1 o- U( `& |1 L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 w5 A" G1 L, R: ]' i1 s) J delay(20);
; B4 X# h/ i f9 K2 |, i }
& B# g1 d/ G: G1 d. I" M7 E}1 p2 K b8 [% m6 d2 a9 l1 \
|
|