|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
, k4 p d+ w( j7 z# B& ?& lvoid PSCInit(void)7 e$ [$ e0 A* H. c% |, l
{
% b! U, V0 i. ~6 C0 A2 [# l PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, \& n2 ^# j1 t. ~, @
}" H% o9 D2 @; }' }! o& c
+ }' V' Q! I( g& c0 A" Ovoid GPIOBankPinMuxSet(void): p2 A6 I3 s: e+ m( _1 Y+ v
{
; P9 V% s0 s3 X5 d // DRDY ------------ GPIO6[14] -- 111# f6 W' g; f8 q
// SPI1_CLK ------------ GPIO2[13] -- 46
. E; p, x; R9 i. S // SPI1_SOMI------------ GPIO2[11] -- 44- k* e! p5 r; U8 ~
// SPI1_SIMO------------ GPIO2[10] -- 43! B! R1 ?9 z# f. {$ z& s' _3 h
// SPI1_CS2 ------------ GPIO1[0] -- 17. M+ z c/ l, Y; z7 N3 ]- d( i
// SPI1_CS3 ------------ GPIO1[1] -- 18
/ X( w. s4 M) `9 Z) c- h4 O
1 R5 Y0 j6 Y) O$ Q6 K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 x8 W6 l4 I" R( u" J& o' w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; M+ v5 S! k& t" }8 p* m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 }7 K( S4 }) [; p# R
7 R8 u2 _3 d* L4 U3 v0 u: f //DRDY Y: j$ W, m$ b2 q; s4 [* f/ \
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 p' E( b5 U& y" y- J
// CS2,CS39 e) T: t* r- j" W, j
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
7 ~6 Y0 Q, s9 m$ d! F1 {- R/ ^" v% w# ^ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
! J" W& J% h3 [# M //SIMO: R( a+ b0 `- Y. y: R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
5 U* y5 J# `' W) w, n //SOMI
$ Y7 n ]; r+ |4 _# J( g GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* a( ^0 G+ V4 G' d
//CLK, I/ M5 K- b3 p1 K* P0 l
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK M, I4 f/ k7 K" p
% w- I0 n8 G% Q$ {! O K
// LDAC
5 P/ l5 d& v- J' u; N GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 R% u1 m% G: ^% u* Z, K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 f6 o2 J J ?2 {) O9 m& X; k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 f0 @. p- {* B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS33 O9 J0 ^/ y# q2 j
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ h( v' Q J! m7 C, A
}
0 c( F- o8 I& K/ T2 x9 q4 G5 C; A! h- [1 p9 O
int main(void)
8 p9 M: u! L7 v{" S0 R$ W& C" |# ?4 D
// 外设使能
. Z' z) D/ k+ ?1 F. P PSCInit();) D2 A( M P0 l/ G: W4 y
4 E Z/ U" k; z8 q8 }' T# @5 [
# a+ A$ Q; d9 g/ a v% o" |1 j // 管脚复用配置
. g! D' I' [" ~7 l# g* t3 ~, Z7 x GPIOBankPinMuxSet();# g$ ?% U K6 H* h6 ~; @
for(;;)! i+ j; N( N5 E$ P, q# G+ R
{. ]6 U1 G0 Z6 B: K
SET_SCLK();//时钟正常输出
! F! `% z: }; C | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% ?0 L8 k( [9 H( h4 a" B7 p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% m& p0 }3 x9 x. E; B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 d$ a( P: n2 N% @" v$ p9 _4 I# G. n2 a* S! I$ v9 @
delay(20);% O6 i9 _ F! |$ z
CLR_SCLK();$ Q1 t3 x* Y' @( b
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3% T/ ?/ C" C% S3 a( z/ K$ A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 Z4 I* i/ z2 A D2 n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 T. q7 S7 s; y- S9 t delay(20);
/ k8 X9 ?2 k4 u0 `7 z' P }
! Y5 F5 W. k$ T3 Y$ M}5 U" I2 W& k7 O2 l
|
|