|
|
使用下面的例子代码,不能使SIMO和CS为低电平:( N/ r6 Z' E4 r
void PSCInit(void)
0 s' Q, r+ L0 S. `{
# V; [6 j) |% w. j* M5 l& h; } PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 c- y/ Y$ f4 j4 z0 q! T}: o* H% u( {; s5 X9 M1 `
1 p- _# c, u3 o7 P
void GPIOBankPinMuxSet(void)
' ~6 b9 P. w5 F, u; p{: n6 |9 b# M* T
// DRDY ------------ GPIO6[14] -- 111
& {& v8 s7 `' C/ P // SPI1_CLK ------------ GPIO2[13] -- 461 ~# n0 j6 y0 Z. X7 Z
// SPI1_SOMI------------ GPIO2[11] -- 44
7 u( o {: I4 k: v% I // SPI1_SIMO------------ GPIO2[10] -- 43
d! I! {+ u! f# ]+ k* T/ u // SPI1_CS2 ------------ GPIO1[0] -- 17
* y% o7 [/ E5 K" t // SPI1_CS3 ------------ GPIO1[1] -- 186 _/ M; Y* s- a. L1 c9 A5 [% |
/ H7 \' ]2 w5 u3 P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
7 l- A* O1 b4 @: y1 u1 X0 P9 ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 c* k. Y" l- }: F
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
; T: ~, h& d" P% J5 V5 l1 Z5 Y8 X# C! m8 K
//DRDY' o7 e1 P7 Z! b! x
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* p2 i* y0 ~$ k& X: y$ Z
// CS2,CS3, ^& G* A+ w4 X, u- L( s. c
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
" ~% j* K+ ~0 _& J) R/ a GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( t7 Q' C: o+ a* @1 z% I; u+ F
//SIMO2 _5 p2 l9 M9 L. I
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ G6 d& d+ G# R, V4 C: v% X //SOMI w4 d* }; a$ j' M' T0 e0 ~1 s
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 P- V C& Z5 Y) X; H8 i //CLK5 |; r( c# e& \4 d7 A
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 \: Y% u1 H! ?5 z6 J( ^4 r# H9 ?; c0 r3 [2 w
// LDAC I/ M$ k) ]; o0 t! ?: y. ^
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ J) \+ L4 O0 k% u% p- Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! j. V+ @& ~2 ?' [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 M2 ^& C9 T& |' j( j+ z, R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
' u+ K: F( |% L0 k" v0 n, x GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 c# O" c( C+ ^! N( W" R) h0 [9 o
}' A) T) @) o4 ^
! m& _; ~/ R- Nint main(void)
; t( K) a) r2 Z6 ~" X% p( T{
* M5 |: y1 ?0 [% D2 J& A // 外设使能
# y* M0 A) n" G' {0 h PSCInit();1 N% |6 ^4 J0 b( |6 i( R
* `; _6 D; ]6 i2 a
+ s& [( Y& T4 B5 r0 M1 W( i3 M' t3 T
// 管脚复用配置
# I! B$ l* e" }$ T @ GPIOBankPinMuxSet();: F, z F7 F& o; f( A
for(;;)
2 P' B# B5 \% Z- l/ ]6 T7 B {5 N' A/ w' f$ O5 Z# R3 L( ?
SET_SCLK();//时钟正常输出8 {1 ]3 ?1 @( j! Z, ?* Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. t( g+ R {( G7 |, x$ ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
' O- e' E# F) d" M/ _/ r* H( N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 c9 L. j' R, p+ d% }& m# w& N! B2 A" j x- U1 F+ c& K& G% _& I
delay(20);
p0 }2 m" Q3 d CLR_SCLK();
& e. W, M- e0 M) x( ?' n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, O b; h; \$ A4 K$ m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 I( D) o: m% Q' W7 h) E% j. z, d8 y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) T c: Z# Q n+ T, M0 E; X
delay(20);* x7 X+ K7 N8 J4 z$ W ]
}# R6 E9 `7 _4 C6 ~+ @0 o- W
}
$ ^+ M. P& M6 h! j2 b |
|