|
|
使用下面的例子代码,不能使SIMO和CS为低电平:6 V8 w( r6 V4 K
void PSCInit(void)- T1 w) c- B# U" W5 f2 _
{2 t0 B$ m" m( n. {4 d5 M7 @
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 i. T$ F8 Z. p}
9 Y$ j% \2 u" z6 t" ?& N0 v; ^( }' B" g- _* A
void GPIOBankPinMuxSet(void)$ T! q4 _) V* N6 N
{( i2 y& L6 _4 M- H9 ~, U- P" o
// DRDY ------------ GPIO6[14] -- 111" {) Y6 ~ ?* ~6 c
// SPI1_CLK ------------ GPIO2[13] -- 46 o; y2 D8 a+ K6 c& l. L, Z
// SPI1_SOMI------------ GPIO2[11] -- 44
+ Y- Z: q' Z$ t7 K8 p7 c4 _ // SPI1_SIMO------------ GPIO2[10] -- 43/ K' r6 {# S$ ^% c9 L# R; L/ g
// SPI1_CS2 ------------ GPIO1[0] -- 17( p/ k; r' A# i/ \! G9 E% Z
// SPI1_CS3 ------------ GPIO1[1] -- 18
x$ `* f. B r. l; _( J
0 O- ?" A6 {5 y+ a- k' G+ t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 B6 c0 W" c; X( \/ f1 V ?' }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
/ [- {) N; Z0 f, C HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 T$ e# U, ?9 j6 m: n$ f2 t
& X' g$ U3 r E7 x( r2 U/ u& _ //DRDY M& o. O/ o0 ]- ?/ L8 H
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 l% D4 k$ V3 c6 V" _. E+ D // CS2,CS3
# X1 i! u$ v! J; h! b GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- ]+ F" m0 w2 v* [" {
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
Z! N) A8 {) N( k$ t //SIMO
6 @) \8 U" @. v GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 f1 ?. {7 J4 R- o1 b7 n6 c# A+ C //SOMI+ Q! W2 p$ d7 t( X' V6 v
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: [+ E* Z" h6 B# ]5 j: H //CLK- R" A9 _! C1 C+ f- h; m
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( m, U$ U4 _6 N# K, _% x0 D' v
8 l0 N1 r) o9 a _+ j // LDAC
5 h9 y5 V# R. p+ t3 V: k, s GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# _) Q$ Y; o t+ |9 g# d
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 i4 x6 S6 y* O" b( ? GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 V6 }$ v- L' E9 x' j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
4 ?1 K$ Z& {$ `) b! v# O: J/ t GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ Y' d7 W4 S, c; ^0 Q# D}- G+ {, d( B4 m, p+ g
$ i% ~" Y$ f u" w) ?- Yint main(void)! S O4 F, Y5 ~
{
/ D- k% d# `2 h% b$ b // 外设使能, u9 G0 E" H! ^/ _7 M O( k
PSCInit();! V- j5 F3 G) U' X+ o( z! G& d+ {! V
2 W1 v- k; u: N5 U+ ] N + A$ p: M3 t7 v; \: F, U
// 管脚复用配置
: i- ^1 L! X7 p( t) d1 t$ p GPIOBankPinMuxSet();
+ y- t! y* S: R) L2 H for(;;)$ L: h2 t4 ~1 Q! M k
{
4 `. z# t/ T% W S SET_SCLK();//时钟正常输出* C# ^# O6 O" S& k7 S4 [6 Q$ u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 p; A, P; ?! e4 [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
. {. \- l) p$ [" }( | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" z7 N1 M9 Y) K* X/ J" X
1 D" k5 D0 K/ h4 D- v2 V7 }
delay(20);
3 U: d/ H" C$ y% U% W2 E2 T' p- _; w6 {. s CLR_SCLK();5 s5 e5 E' N7 E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 D0 S" e! u+ b' M4 x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& M3 t: D! d8 _0 W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# `& Z3 h$ X) j" R: M# t; J& b delay(20);
. |7 I! T) d- @8 {. ]: { }
" ^; z8 b& M4 S# Y1 ~% c f' n, z}
# `+ i9 `5 f0 i$ h6 B |
|