|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# P$ x0 |$ |' P& q& u/ Zvoid PSCInit(void)+ X* d1 E( F1 R7 W
{; ~0 x( V: v; m% [1 g
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
* ] |. y! j; ]% R. G& i- i}
" A. X/ M" T7 n. y2 g6 Z- Q; ]2 F# x* S* }0 Q! f. Z
void GPIOBankPinMuxSet(void)
! j4 n6 ^' j) d) l. |. H% X- c- ]{
5 q9 O, ^' s& V4 Z! B // DRDY ------------ GPIO6[14] -- 111
5 a7 _; u! }9 u% t; N // SPI1_CLK ------------ GPIO2[13] -- 46
9 e% F. {( c! y // SPI1_SOMI------------ GPIO2[11] -- 44, E b9 U6 i- E$ P- w; d* c
// SPI1_SIMO------------ GPIO2[10] -- 43
1 {1 E) n) m1 X, F5 p9 u! ~) c // SPI1_CS2 ------------ GPIO1[0] -- 17: j: a! G: s6 b5 h: k8 Y9 ^5 H$ H, ^
// SPI1_CS3 ------------ GPIO1[1] -- 18
* J& I+ ?3 Q/ q, S. j$ V. U# I7 m5 |0 W2 K n+ o& l" L8 s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ v8 i7 _' n n V+ q& l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- ?( t! M! b4 Y6 H$ e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 u; S3 `1 l6 w2 j' ]7 [5 F; z' K0 Q7 y% h# v/ x6 t4 p
//DRDY6 D( T3 e. t0 m7 F& \
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
+ F4 f: d. u8 K3 {# Z4 ` // CS2,CS3
) p+ X# b- D' x0 Z y: e+ O5 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 b* \+ |& D& v; w9 | D! K' f7 Y5 y
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, r+ H) B, T, l. z+ m: f' c' b
//SIMO4 ]+ _$ U$ }0 o/ d3 S
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO' l, f+ E. n* W l
//SOMI
+ `- T* D& q. w4 x GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# s. @1 D* d( L6 w x$ F$ L //CLK
; f" o) _, e! K4 _( {+ N9 b GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK. k# X8 m0 }3 h* I4 \4 Z
& q% J9 C) d* P1 N; F' ~9 P // LDAC+ u) H9 }3 j" Z( P( w
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 J; M/ e$ ?9 _ K% @/ C GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; v Z/ K* O2 ~3 j0 V! s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; O. ?% j! Z5 L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, L/ w" E! W" h _- i% F, ^3 ?2 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY T! c# u0 k& _: W3 z1 _
}
1 {! \- I0 M I# e3 Z# g! G6 ^. a+ u c' K6 }
int main(void)
$ i |, ?6 Z: K; p# e{. f% }7 \, @. x# Q; T- d
// 外设使能
+ z* V, h- y2 n8 L+ D PSCInit();
$ U! Z" F9 c. i, x1 k& r2 n' r* x4 i( P
4 w e$ f" K& Y, P9 x , n9 D; q4 X) _& y8 E) y( E3 W
// 管脚复用配置/ g# G4 ^0 _3 b9 o# I
GPIOBankPinMuxSet();0 O* z( L' s4 r/ g
for(;;)0 c- ]4 X- D% C* B G
{
. \# D5 x0 y- n! g) J SET_SCLK();//时钟正常输出
6 u; p2 H' \$ [0 u3 Z5 v0 t9 x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 C8 U8 O8 E4 D# y, I4 b/ c' Q U7 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
/ e( O- I7 D3 b( D# v5 G* t$ ?. g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 p& c8 j* Y7 C( N3 Q( ^, m# P$ w+ s1 P6 h" n% H
delay(20);
, C9 i- K" c0 V0 R" F: E CLR_SCLK();
O- ~+ C4 q) H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& K' Q; q0 C7 O: B4 x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% X; m; A1 N8 z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
M8 g$ m* P$ `7 W' e/ n$ X: g0 n delay(20);, d9 M1 _6 \* m
}
! J" A& f/ z$ w; Z, d}" F9 l* [# e4 \% R
|
|