|
使用下面的例子代码,不能使SIMO和CS为低电平:4 L# x6 V2 w* p \ d. m
void PSCInit(void)% J7 S# k) M7 v1 P+ b
{
- [8 r" F! T8 A2 s; W& r' J PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
, \- w9 b) F, @% U. v% ]2 a}3 r! s! j; @+ t& h# h: j, K) U
4 Y) q- {7 ~ K/ ^% a8 |2 w
void GPIOBankPinMuxSet(void)
7 L) \1 e! _4 i3 n. p6 K{
o- y$ t% d' u$ ~/ o // DRDY ------------ GPIO6[14] -- 1114 n7 Z$ f4 a9 ^6 L
// SPI1_CLK ------------ GPIO2[13] -- 463 S% m* g* Y2 s4 t" q4 R4 X
// SPI1_SOMI------------ GPIO2[11] -- 443 \# S1 e' |8 B) _
// SPI1_SIMO------------ GPIO2[10] -- 436 R" _( D. v2 J# I) U2 G
// SPI1_CS2 ------------ GPIO1[0] -- 17: e4 Y: d" j+ I% Z5 d
// SPI1_CS3 ------------ GPIO1[1] -- 185 b3 D8 ?0 p' J1 [2 b: q' v
: P' e& e/ P7 W' E$ w. r* x3 j! b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 R* G' k+ [- A# D- y. Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
q1 {$ A- w" w! `- \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);0 A& D& }( A j9 \+ \. O0 S# y
1 R% z' H# P1 E0 X$ u
//DRDY
# G4 x' }4 Y0 Z# x& K# ], M( Q1 y GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
3 F, s" q: v0 u& N // CS2,CS3
( B" r/ O) r7 `7 J* H" l d GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
2 P; z( d" s* G! j, j GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 @- Q) w2 `* ]! {$ o //SIMO
2 f W: P ^( |3 x GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( w8 S0 H, x+ s- [ //SOMI# N6 F( V8 P3 ?4 l4 q3 X m
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* a' u. j1 i; M3 C //CLK4 I2 S+ Z/ a* J
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& c; v. ^ o& u' l: G
9 e- W) k. j) l( j* u, V6 ?* \" i1 P
// LDAC2 o5 f) s. L- A2 q. U8 Q* V
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! C( i4 j; {1 O% u/ e# e8 E h6 G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 |" j4 [+ j* R* q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 S! ?4 B$ N( L2 Y1 A9 Z! e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
% P; Z0 Z9 C; p. v GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 _5 R6 D4 \! |$ C v$ J}) f4 T& f* R% J' N R, z$ [
! d2 c" L" n- M
int main(void)0 l0 }% \! \; k/ T6 W2 \: h7 c
{
& n3 Z9 @+ @- P6 D // 外设使能
; g0 @% j! s0 j* A8 N$ Q9 L PSCInit();
) Q& b" z7 t M& B( t) Y3 ]
8 y2 a4 S0 i2 ?( E8 X+ C) r! t
! D, Q8 [/ a: t9 H // 管脚复用配置
. a& ]0 B5 ^) O' H7 M1 V- Q4 r GPIOBankPinMuxSet();
8 d- J; R \1 l# _ for(;;)8 b0 V1 |1 c' A7 M7 e- h
{4 P) w2 R4 z% h' q$ a$ X& l
SET_SCLK();//时钟正常输出0 N$ E7 {: n( }5 S. w5 Q" P) }* G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 y9 u% ^% N! q5 z. G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- n5 Y$ R6 v, {0 o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, h0 f8 j- z9 T* ?3 s2 p
! J a) v; M( p U! M delay(20);! ^9 M. b; p* l0 P! X( ?
CLR_SCLK();
4 }1 ~1 T+ C' ~! M; J% N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
" C7 d& b% ~1 v7 g% n) L/ t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 G4 x$ E+ a+ r( J+ T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- l- u. H$ j f delay(20);
4 @9 X+ n% m u1 M! K }& X4 D9 F3 x: q0 h8 i1 N9 _
}: }4 s' c" t) w, i9 J+ N* c5 z% V3 A
|
|