|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# x: x2 Q: P% {
void PSCInit(void)6 ?9 l* s/ z( l" K
{
7 `+ ?6 D% j i8 w: k" q PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! X" X) J; _' W0 z& \}
/ X$ `) t- v1 m: h) ]7 r% ]7 s6 s, s$ [0 s2 ]! H
void GPIOBankPinMuxSet(void)
8 r* {2 t0 E) c, S- y" J$ b{& s0 s1 a9 `0 L: J
// DRDY ------------ GPIO6[14] -- 111
. |5 M$ I3 d7 t( z // SPI1_CLK ------------ GPIO2[13] -- 46
4 t+ {) R0 y6 {* x; y, S, f // SPI1_SOMI------------ GPIO2[11] -- 44
; d* b# {) Q0 U // SPI1_SIMO------------ GPIO2[10] -- 43; E! r: E: C" }3 A: p" E* L6 j& b# k
// SPI1_CS2 ------------ GPIO1[0] -- 176 y3 B7 B9 p( P8 C: X0 q
// SPI1_CS3 ------------ GPIO1[1] -- 188 F e! d0 ?. E) A' B" _1 V8 Y
# @0 f3 c1 t5 s; d! ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: ] @7 H" w! Y4 a5 X* v: n) U! T1 M$ o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 Y4 V% l8 w' @; V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);5 G) [( }& I* U( Y9 h# T0 L+ k/ x
( Y8 w6 X; j) F) j; n
//DRDY# @# e! l! r5 R% M" Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* Q; Q' d" v0 K- Y3 |+ m: x
// CS2,CS3 q- ~7 E6 e0 A& _# a1 s2 n
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* ~4 U6 K2 C' ~2 M/ k8 W/ w! F
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: h7 v" t# O4 M( D' a7 B //SIMO6 D2 p! E% H: i2 |: g1 K; m. A
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* _2 M& t6 d9 X& M! N7 [2 Q' d
//SOMI" J. x$ \. Q6 y* H1 C8 M
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
/ V2 S- W" m/ S" B; A* C* Q, w //CLK
1 c9 e% h9 R7 u; {" u f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK0 w! ~$ L2 X# M+ |0 q% {/ A
, k$ R- l0 u, u% b1 N
// LDAC; T6 n: Q% _' }+ `, `4 D$ \
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* R' }7 @% a/ x5 W4 ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: P' ^/ n- z$ t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 W" T- H$ V; c+ E4 }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
! F( g' Y, c; y GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% ^- N/ n6 D7 K! _+ A& }1 `}
1 X) b- l. R7 v: N1 s% f& T+ ]9 v# z; b" W4 I
int main(void)! F! Y9 w7 j1 f s* `% m ?
{
8 r) v+ I2 O7 L7 u // 外设使能
' d+ b- W8 ^, E; Q PSCInit();
6 C) X( G K+ l& `; F2 J' o0 B
! o* o0 w. r: U3 V% w
9 b9 @/ d& L. h) ~0 y/ b# W // 管脚复用配置5 i- N9 u/ x! V8 G; }$ ^9 e
GPIOBankPinMuxSet();
, Y3 Y5 o) W. K' f% W+ _. \ for(;;)% E4 M/ }: U4 @
{9 m, m# A, q. D
SET_SCLK();//时钟正常输出$ O0 b7 t) D5 A0 C( \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& j! |/ _$ T0 l' \) {# _2 n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' H3 Y6 E2 v% X* M( y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 k+ {; a7 q. a
( ^& c: \' `' G! l) v delay(20);+ Q% u7 Z8 b3 g# D
CLR_SCLK();
6 U; c0 a5 }- C# a3 K; c* y1 h0 ? GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3% O( ^4 G; j9 y, N3 _: w" L: ?9 [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 r" G- I" I2 x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ V: v% s+ {& o x0 p delay(20);
: W3 w) U+ ^3 C+ F }
( V5 |6 c5 s5 q* p0 P# x}
[: [/ e, b/ g% [" Q |
|